为什么+ = a在C中等于0?

布鲁诺姆苏兹

首先很抱歉,如果以前曾有人问过这个问题,我尝试寻找答案,但找不到。

我是学习C的初学者,在测试无限循环时,我编写了以下代码:

#include <stdio.h>

int main()
{
    int a = 1;

    for(;;)
    {
        printf("%d\n", a);
        a += a;
    }

    return 0;
}

输出等于0的序列,而我期望的像是1,2,4,4,8,16,32 ...

但是,如果我这样做:

#include <stdio.h>

int main()
{
    int a = 1;

    for(int i = 0; i < 10; i++)
    {
        printf("%d\n", a);
        a += a;
    }

    return 0;
}

仅通过包含循环控件,它就可以打印结果1、2、4、8,...,512。有人可以解释发生了什么吗?

用户名

如果您运行第一个程序但将结果通过管道传递给更多程序,则会看到1,2,4,...

./a.out | more

0是整数溢出的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章