<分区>
{
int i=1;
while(i<=32767)
{
printf("%d",i);
i=i+1;
}
}
打印 1 到 32767 似乎是一个简单的程序……但是当我达到 32767 时……将值递增 1……它试图转到超出整数范围的 32768 并转到另一边是 -32768 .....由于当 i<=32767 即 -32768 时条件变为真.....所以它应该作为无限循环工作。 我的 Dev C++ 编译器只打印 1 到 32767....它不是无限循环。 任何人
标签 c++ c loops while-loop
<分区>
{
int i=1;
while(i<=32767)
{
printf("%d",i);
i=i+1;
}
}
打印 1 到 32767 似乎是一个简单的程序……但是当我达到 32767 时……将值递增 1……它试图转到超出整数范围的 32768 并转到另一边是 -32768 .....由于当 i<=32767 即 -32768 时条件变为真.....所以它应该作为无限循环工作。 我的 Dev C++ 编译器只打印 1 到 32767....它不是无限循环。 任何人
最佳答案
大概您的平台上整数的大小是 > 16 位。
ISO/IEC 9899:201x 状态
minimum value for an object of type int
INT_MIN -32767 // −(215 − 1)
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
事实上,如今大多数平台上的大多数 C 编译器都将具有大于 16 位的整数。
在 C 语言中,整数保证至少 16 位。假设它是特定尺寸是危险且不可携带的。始终检查。
关于c++ - 为什么while中的循环计数器超出了整型变量的范围,所以不是无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12787043/