我写的代码是这样的,
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++)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
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++)