首先很抱歉,如果以前曾有人问过这个问题,我尝试寻找答案,但找不到。
我是学习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] 删除。
我来说两句