鱼C论坛

 找回密码
 立即注册
查看: 2006|回复: 7

c语言int取值范围

[复制链接]
发表于 2020-5-31 13:23:22 | 显示全部楼层 |阅读模式

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

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

x
c语言中,int的取值范围是负的2的31次方(1000000....)~2的31次方(011111...)减1。
我纳闷的是,为什么说,因为有一个符号常量所以减1,但是为什么要减1,怎么算的。真的搞不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-31 13:25:58 | 显示全部楼层
因为 0 被放到正数范围了,所以正数范围就少了一个。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-31 13:29:49 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-31 13:25
因为 0 被放到正数范围了,所以正数范围就少了一个。

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

使用道具 举报

发表于 2020-5-31 13:41:27 | 显示全部楼层

因为int的范围是256,正数范围是1-128,而负数范围要容下一个0,
所以会少一个。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 13:47:04 | 显示全部楼层
这得分有符号(signed)和无符号(unsigned).

signed里有一个符号位,表示正数负数,它位于二进制数的最前面.

而一般我们直接int a是默认为有符号整型.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 13:49:24 | 显示全部楼层
qiuyouzhi 发表于 2020-5-31 13:41
因为int的范围是256,正数范围是1-128,而负数范围要容下一个0,
所以会少一个。

是正数范围要容下一个0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-31 13:53:01 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-31 13:49
是正数范围要容下一个0

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

使用道具 举报

发表于 2020-5-31 14:32:09 | 显示全部楼层
想象一下,如果让你用二进制的2bit表达数的范围,00、01、10、11,如果10、11表示的是-1、-2的话,00、01只能表示0、1了呀,范围就是-2~1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 19:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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