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

Indefinite loop occurs when out of integer range in C

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

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

程序代码-

main(){

         int i;

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

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

    }
}

因为 32767 是 16 位整数的最大值。

在将其递增 1 之后,您还期望它的值是什么?

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

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

在求值表达式i++之后,i的内部表示的符号位被置位,i变为负值-32768,即INT_MIN 在这种情况下条件

i<=32767

将产生 true。