我的问题是,当我们试图打印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/