这条消息只显示11次的原因是什么,
#include <stdio.h>
int main(void)
{
int i = 1024;
for(; i; i>>=1)
printf("Some message");
return 0;
}
答案 0 :(得分:2)
当您使用位移运算符时,您需要了解如何以位模式表示1024
。 1024将以位格式表示10位(2 ^ 10 = 1024)。
因此,对于第一轮for
循环,i
的值将为1024
(二进制为10000000000
)。在后续迭代中,i
的值将除以2,因为右移操作,例如(1000000000
,100000000
,10000000
,...,{{ 1}},10
,1
)。
在最后一次迭代之后,0
将保留值i
,从而导致for循环条件为false。因此,循环将在第11次迭代后停止。
为了更清晰,您可以在每次迭代时打印0
的值。
i
<强>输出:强>
#include <stdio.h>
int main(void)
{
int i = 1024;
for(; i; i>>=1)
printf("%d: Some message\n", i);
return 0;
}
答案 1 :(得分:0)
运行此:
#include<stdio.h>
int main()
{
int i=1024;
for(; i; i>>=1)
{
printf("i: %d\n", i);
printf("Some message\n");
}
printf("i outside of loop: %d\n", i);
return 0;
}
如果需要,请随时向我提出跟进问题。