这里for循环为什么显示会无限循环,而且结果出现一个负数?

我写的代码是这样的,

img


但是运行会无限循环1而且有俩个结果,其中一个还是负数。

img

i是int类型.
int类型取值范围为-2147483648 到 2147483647。
循环中当 i=2147483647时,再i++对i加1,就超出int型取值范围了,
2147483647+1会变成负数 -2147483648, 下次循环i再加1就是-2147483647
,之后循环到0,再之后变回正数,再到2147483647之后又会变成负数 -2147483648 ,周而复始.
你循环条件是i <= 2147483647, 就只有大于2147483647才能结束循环.你永远达不到这个条件就是死循环
解决办法:循环条件改成i < 2147483647

for (int i = 2; i < 2147483647; i++)

或者i改成long int类型.

for (long int i = 2; i <= 2147483647; i++)

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

i的结束条件超出了整形最大范围。

你写的代码没有执行,而是执行了之前写的代码
全部重新编译一下
你之前肯定写的是i=5;i-=2147483647

因为2147483647是int 能表示的最大数0x7fffffff,所以i小于这个数永为真,也就是说i不可能大于它,你把i的类型改成long long 就可以了
for(long long i=2;i<2147483647;i++)

C语言中,有符号整型的的取值范围为-2147483648~2147483647。在你的for循环中,最后一个循环应该是 i=2147483647,然后再继续进行i++,这是已超出int型取值范围,2147483647+1的值变成 -2147483648,然后又在此基础上开始进行for循环,一直+,直到i又等于2147483647。然后再次+1变成i=-2147483648。就这样变成了无限循环。
解决办法:for循环改成这样:for (int i = 2; i < 2147483647; i++)

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632