鱼C论坛

 找回密码
 立即注册
查看: 2323|回复: 13

[已解决]为什么这个不是死循环?

[复制链接]
发表于 2022-8-11 14:54:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 1613551 于 2022-8-11 15:08 编辑

这串代码不应该是会一直循环吗?
实际却是直接就结束了
#include <stdio.h>
int main(void)
{
  int x = 1;
  while (x > 0)
  {
    x++;
  }
  return 0;
}
最佳答案
2022-8-11 15:04:05
本帖最后由 jackz007 于 2022-8-11 15:06 编辑

          当 x 增大到 x = 0x7fffffff 也就是 2147483647 时,x + 1 = 0x80000000 对应的十进制数值为 -2147483648,也就是说,x 会直接变成一个很小的负值,这个时候 x > 0 的逻辑值可就是 false 了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-11 14:59:41 | 显示全部楼层
当x增大到超过int的最大范围时,程序就终止了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:00:47 | 显示全部楼层
在32位和64位机器中,int占32位,取值范围为-2147483648~2147483647

评分

参与人数 1鱼币 +4 收起 理由
1613551 + 4

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:02:13 | 显示全部楼层
当循环到x大于2147483647时,程序自动终止了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:04:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-8-11 15:06 编辑

          当 x 增大到 x = 0x7fffffff 也就是 2147483647 时,x + 1 = 0x80000000 对应的十进制数值为 -2147483648,也就是说,x 会直接变成一个很小的负值,这个时候 x > 0 的逻辑值可就是 false 了。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
1613551 + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:04:21 | 显示全部楼层

当循环到x大于2147483647时,程序才结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:05:11 | 显示全部楼层
运行程序后,等待几秒后程序才结束的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:05:52 | 显示全部楼层
那几秒的时间,程序一直在循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:06:25 | 显示全部楼层
当循环到x大于2147483647时,程序才结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:07:26 | 显示全部楼层
jackz007 发表于 2022-8-11 15:04
当 x 增大到 x = 0x7fffffff 也就是 2147483647 时,x + 1 = 0x80000000 对应的十进制数值为 -21 ...

哦,对哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:08:00 | 显示全部楼层
忘记会变成负数了

评分

参与人数 1鱼币 +5 收起 理由
1613551 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:09:55 | 显示全部楼层

回帖奖励 +50 鱼币

本帖最后由 一点点儿 于 2022-8-11 15:13 编辑

在32位和64位机器中,int占32位,取值范围为-2147483648~2147483647
最大正数可以表示为:0x7fff ffff
最大负数可以表示为:0xffff ffff
当循环到x等于2147483647时,x++,
x就等于-2147483648了,x<0,循环结束

评分

参与人数 1鱼币 +5 收起 理由
1613551 + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-11 15:20:43 | 显示全部楼层
一点点儿 发表于 2022-8-11 15:09
在32位和64位机器中,int占32位,取值范围为-2147483648~2147483647
最大正数可以表示为:0x7fff ffff
...

看得出来,你真的很想要这50鱼币,于是我再多送了你14鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-11 15:21:50 | 显示全部楼层
1613551 发表于 2022-8-11 15:20
看得出来,你真的很想要这50鱼币,于是我再多送了你14鱼币

感谢大佬,孩子太穷了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 10:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表