当在C中超出整数范围时发生无限循环

时间:2015-03-12 20:52:00

标签: c loops for-loop infinite-loop

我的问题是,当我们尝试打印0到32767之间的数字时,为什么会出现无限循环,

为什么会回到-32767并重新开始打印。

计划代码 -

main(){

         int i;

         for(i=0; i<=32767; i++){

         printf("%d\n", i);

    }
}

2 个答案:

答案 0 :(得分:2)

在你的环境中,int(INT_MAX)类型的对象的最大值似乎等于32767.因此,我等于32767

for(i=0; i<=32767; i++){

在评估表达式i++之后,设置i的内部表示的符号位,并且i变为等于负值-32768,即INT_MIN 在这种情况下条件

i<=32767

将产生真实。

答案 1 :(得分:0)

因为32767是16位int的最大值。

在将它增加一个之后,你还期望它的价值是什么呢?