int k=1; while(k) k++; 为什么循环不是无限循环?

如题所述

k++加到int最大值之后会溢出,变成负数,然后再加,会变成0,就不满足while循环条件了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-30
足够多次循环后溢出
第2个回答  2010-12-30
因为int类型不是无上限的 等执行到上限的时候会循环到0然后就退出 你可以在最后加一句prinf("%d",k);就知道了
第3个回答  2010-12-30
k初始值是1,非0,while()循环执行,先判断括弧里是否为真,如果为真,执行while后面的句子,k初始是1(真),然后+1,仍然返回while()重新判断,这时k=2仍然是真,再执行while后面的句子使得k再+1,结果k=3,再返回while判断。。。。以此推下去,k始终由1开始网上递增,所以while(k)中括弧里的k永远都不可能变成0,只要k不是0,while()中括弧里的条件永远成立,这样变成了死循环
相似回答