C语言的题,判断是否死循环?

i=32767;do{ if(i<0) break;}while(++i); 麻烦高手帮我解释一下原因。
2025-03-24 17:57:16
推荐回答(5个)
回答1:

看你怎么定义i了,如果是int i,那么i的范围是-32766到32767,那么这就不是死循环了,因为i++后i=32767加了1,因为已经到了最大值,所以i有回到了最小值,从新来过,那么i=-32766,那么就可以break了
如果定义 long i;那么就是死循环了

回答2:

我想,当然是死循环了.
一个循环,你需要使这个循环趋向于结束的语句.对于你这部分内容.++i,i一直在增大,永远也不可能达到i<0的情况.所以这个循环一直执行,也就是死了.如果变成--i;就有可能执行break;了

回答3:

你得看i是什么类型的了

如果是无符号的,那就死循环
如果是浮点型,也是死循环。

如果只是int型,会跳出,因为int型超出正数最大值再加就溢出了,将数字溢出到符号位,那就成负数了。

这个只能当反面教材,是出错的代码。

回答4:

理论上是不会的,因为i肯定有个类型,比如是int型的,达到一定的值后将溢出(变成负值),到时候再增加的话就会跳出循环了,也就是说不是死循环

回答5:

如果i是int型`且是16位的话不会死``
因为i++加到32767+1=32768的话就是负数啦``
01111111 11111111+1=10000000 00000000
因为10000000 00000000是负数``
所以跳出