我的问题是,当我们试图打印0到32767之间的数字时,为什么会出现不确定循环,
为什么它会回到-32767并重新开始打印。
程序代码-

main(){

         int i;

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

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

    }
}

最佳答案

在你的环境中,int型对象(INT_MAX)的最大值似乎等于32767。所以我等于32767

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

在求值表达式i++之后,i的内部表示的符号位被设置,并且i变为等于负值-32768,即INT_MIN
在这种情况下
i<=32767

会屈服于真实。

关于c - 当超出C的整数范围时会发生不确定循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29019968/

10-11 22:34