我预计它会产生:
10 5 3 2 1
但是打印
10 5 3 2 1 1 1 1 1 1 1 1 1 ...
为什么?
#include <stdio.h>
int main(void)
{
int i;
for(i = 10; i >= 1; i /= 2)
printf("%d ", i++);
return 0;
}
打印2,然后添加一个,使其为3,除以2为1.当1等于1时,打印1,然后加1,使其为2,除以2为0.循环应该结束。
答案 0 :(得分:2)
当i
为1时,使用printf
语句打印它。然后i
递增(通过++
语句中的printf
运算符)。然后执行i /= 2
,结果为i = 2 / 2
,结果为1
。这满足您的条件i >= 1
,使其成为无限循环。
答案 1 :(得分:1)
当i /= 2
变为1
时,循环体将打印1
并按i
递增1
。这永远不会让i /= 2
的值小于1
,因此i
的值和循环将无限迭代。
答案 2 :(得分:1)
我不断增加到2并除以2,产生无限循环。