在下列选项中,没有构成无限循环的程序段是( )。
此问题为什么选择C? (过程尽可能详细!)
A中,循环体中i=1%100+1的值永远是2,if(i>100)永远不会成立,所以循环永远不会结束。
B中,for循环的第二个表达式为空,就是没有结束循环的条件,所以一直执行
C中,因为循环体中k一直在减减,当k的值等于0的时候,就会结束循环
D中,s=36是定值,所以while(s>=0)永远成立,循环一直执行。
private static void testA() {
int i = 100;
while (1) {
// 1 % 100 + 1 = 2,i的值永远等于2
i = 1 % 100 + 1;
// i > 100为false,代码永远执行不到break;所以一直死循环
if (i > 100) {
break;
}
}
}
private static void testB() {
// for (; ; ) 相当于while(true),所以会一直死循环
for (; ; ) {
}
}
private static void testD() {
int s = 36;
// s >= 0永远为true,所以会一直进入死循环
while (s >= 0) {
++s; // s的值总是在36的基础上递增加1,所以s 永远大于 0
}
}