这个消息只显示11次的原因是什么,

时间:2018-01-22 04:26:49

标签: c

这条消息只显示11次的原因是什么,

#include <stdio.h>

int main(void)
{ 
    int i = 1024;
    for(; i; i>>=1)
        printf("Some message");

    return 0;
}

2 个答案:

答案 0 :(得分:2)

当您使用位移运算符时,您需要了解如何以位模式表示1024。 1024将以位格式表示10位(2 ^ 10 = 1024)。

因此,对于第一轮for循环,i的值将为1024(二进制为10000000000)。在后续迭代中,i的值将除以2,因为右移操作,例如(100000000010000000010000000,...,{{ 1}},101)。

在最后一次迭代之后,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;
}

如果需要,请随时向我提出跟进问题。