【发布时间】:2018-06-27 01:24:31
【问题描述】:
我目前正在学习 C,并且我编写了一个程序,我认为它会给我最大的整数值,但它只是永远循环。我找不到关于为什么它不会结束的答案。
#include <stdio.h>
int main()
{
unsigned int i = 0;
signed int j = i;
for(; i+1 == ++j; i++);
printf(i);
return 0;
}
任何帮助将不胜感激,谢谢!
【问题讨论】:
-
这段代码无法编译,printf 不正确。您的编译器中是否打开了警告?这不是完全相同的副本,但它应该可以帮助您了解正在发生的事情。 stackoverflow.com/questions/17293749/…
-
您遇到无符号整数溢出。当我再次从零开始时,输出应该提示有什么事情发生了。
-
什么会终止使用
i = 1, j = 0并测试i == ++j然后递增i并再次进行相同测试的循环? (例如1 == 1、2 == 2等。) -
您还遇到了有符号整数溢出,
runtime error: signed integer overflow: 2147483647 + 1 cannot be represented in type 'int',这使得整个程序的行为未定义。您认为您如何完全推断出最大整数值?