我的问题是,当我们尝试打印0到32767之间的数字时,为什么会出现无限循环,
为什么会回到-32767并重新开始打印。
计划代码 -
main(){
int i;
for(i=0; i<=32767; i++){
printf("%d\n", i);
}
}
答案 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的最大值。
在将它增加一个之后,你还期望它的价值是什么呢?