1.【单选题】
int i {},b {};
while( i++) b++;
b = ?
A. 0 B. -1 C. 1
解析:while(i++)相当于执行while(i),此时 i = 0,然后i之后再加1,等于没有执行循环,所以b就等于初始化的值等于0,选A。
2.【单选题】
int i {}, b {};
while ( ++i ) b++;
b=?
A. 0 B. -1 C.1
解析:while(++i),i 会一直递增,循环会一直执行,但是int有取值范围,当i的值超出int的取值范围的时候,i 会等于 -1,此时 ++i 等于0,结束循环。这个时候 b 就等于 -1,结果选B。
3.【单选题】
int i { 1 };
do
{
i++;
} while ( i++);
i = ?
A.0 B.1 C.-1 D.死循环
解析:这个循环 i 的初始值为 1 ,然后执行 i++ ,之后再进入判断 while( i++ ),整个过程 中 i 每次循环过后的值都会加2,也就是 2 ,4, 6, 8.......当i的值超出int的取值范围的时候,i的值为-1,加一后 i = 0,此时while(0++),会跳出循环,之后再加1。最后的结果就是等于1,选B。
4.【单选题】
int i {};
do
{
i++;
} while( i++ );
i = ?
A.0 B.1 C.-1 D.死循环
解析:这个题和上一题的区别是 i 的初始值为 0 , 所以整个过程 中 i 每次循环过后的值都会加2,也就是 1 ,3, 5, 7.......当i的值超出int的取值范围的时候,此时while(-1++),会继续执行循环,之后 i 再加 2,while(1++)继续循环,所以为死循环,选D。
5.【单选题】
int i {};
do
{
i++;
} while ( false );
i = ?
A. 1 B. 0 C. -1
解析:这道题就很简单,先执行 i ++ ,之后while(false),不符合循环条件会结束循环,此时i 就等于1,结果选A。