为什么这个不是死循环?
本帖最后由 1613551 于 2022-8-11 15:08 编辑这串代码不应该是会一直循环吗?
实际却是直接就结束了
#include <stdio.h>
int main(void)
{
int x = 1;
while (x > 0)
{
x++;
}
return 0;
} 当x增大到超过int的最大范围时,程序就终止了 在32位和64位机器中,int占32位,取值范围为-2147483648~2147483647 当循环到x大于2147483647时,程序自动终止了 本帖最后由 jackz007 于 2022-8-11 15:06 编辑
当 x 增大到 x = 0x7fffffff 也就是 2147483647 时,x + 1 = 0x80000000 对应的十进制数值为 -2147483648,也就是说,x 会直接变成一个很小的负值,这个时候 x > 0 的逻辑值可就是 false 了。
当循环到x大于2147483647时,程序才结束 运行程序后,等待几秒后程序才结束的 那几秒的时间,程序一直在循环 当循环到x大于2147483647时,程序才结束 jackz007 发表于 2022-8-11 15:04
当 x 增大到 x = 0x7fffffff 也就是 2147483647 时,x + 1 = 0x80000000 对应的十进制数值为 -21 ...
哦,对哦 忘记会变成负数了 本帖最后由 一点点儿 于 2022-8-11 15:13 编辑
在32位和64位机器中,int占32位,取值范围为-2147483648~2147483647
最大正数可以表示为:0x7fff ffff
最大负数可以表示为:0xffff ffff
当循环到x等于2147483647时,x++,
x就等于-2147483648了,x<0,循环结束 一点点儿 发表于 2022-8-11 15:09
在32位和64位机器中,int占32位,取值范围为-2147483648~2147483647
最大正数可以表示为:0x7fff ffff
...
看得出来,你真的很想要这50鱼币,于是我再多送了你14鱼币 1613551 发表于 2022-8-11 15:20
看得出来,你真的很想要这50鱼币,于是我再多送了你14鱼币
感谢大佬,孩子太穷了{:9_228:}
页:
[1]