各循环语句不是无限循环的是 求解析
发布网友
发布时间:2022-05-15 08:51
我来回答
共2个回答
热心网友
时间:2023-10-16 11:50
答案为B,
其中A的0<=i<=5运算式当i为0到5时i<=5的值为1,i为5以上时i<=5的值为0,也就是说0<=0或0<=1永远为真,循环无线循环下去;
其中C当i自增至2时i%2为假也就是说i永远为2,判断永远永远为假i不执行自增操作,循环无线循环下去;
再看看B,i为1时对2求余为1,1=1为真,循环一次,当i增至2时2对2求余为0,1!=0,循环停止。
所以B为非无限循环.
热心网友
时间:2023-10-16 11:50
答案是B
要解答这一题,首先应该弄清几个知识点:
1.for语句的执行过程
2.表达式的值如何产生
先说for语句的执行过程,以形如for(A;B;C)的for语句为例:
开始循环之前,A被执行;
每次循环之前,检查B表达式的值是否为0,为0则退出;
每次循环结束,执行C
再说表达式的值如何产生,这里面出现三种表达式,自增、取模和比较。形如i++的自增表达式,值为i自增前的值,而形如++i的自境表达式,值为自增后的i值;取模的表达式值为其结果;0<=i<=5这样的比较表达式,依照大多数C编译器的计算顺序(从右到左),可以等价为:0<=(i<=5),而每个比较表达式的值为0或非0(一般的C编译器为0或1),那么计算过程就变成:
0<=i<=5 => 0<=(0或1) => 1
再回来看选项,上面说过,A中的条件语句值恒为1,所以不对
B,i自增后再对2取模值为0,即退出循环
C,同样自增后,再循环时自增条件不满足,所以也不可能退出循环。