以下 for 语句在 C 中产生什么输出?
What output does the following for statement produce in C?
我预计它会产生:
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,加1=3,除以2=1,1=1,打印1,加1=2,除以2=0,=0小于1,循环结束。
当 i
为 1 时,您使用 printf
语句打印它。然后 i
递增(通过 printf
语句中的 ++
运算符)。然后执行 i /= 2
,结果为 i = 2 / 2
,结果为 1
。这满足你的条件i >= 1
,使其成为一个无限循环。
当 i /= 2
变为 1
时,循环体将打印 1
并将 i
递增 1
。这将永远不会让 i /= 2
的值小于 1
,因此 i
的值和循环将无限迭代。
i 不断增加到 2 并除以 2,这会产生无限循环。
我预计它会产生:
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,加1=3,除以2=1,1=1,打印1,加1=2,除以2=0,=0小于1,循环结束。
当 i
为 1 时,您使用 printf
语句打印它。然后 i
递增(通过 printf
语句中的 ++
运算符)。然后执行 i /= 2
,结果为 i = 2 / 2
,结果为 1
。这满足你的条件i >= 1
,使其成为一个无限循环。
当 i /= 2
变为 1
时,循环体将打印 1
并将 i
递增 1
。这将永远不会让 i /= 2
的值小于 1
,因此 i
的值和循环将无限迭代。
i 不断增加到 2 并除以 2,这会产生无限循环。