c语言int取值范围
c语言中,int的取值范围是负的2的31次方(1000000....)~2的31次方(011111...)减1。我纳闷的是,为什么说,因为有一个符号常量所以减1,但是为什么要减1,怎么算的。真的搞不懂 因为 0 被放到正数范围了,所以正数范围就少了一个。 永恒的蓝色梦想 发表于 2020-5-31 13:25
因为 0 被放到正数范围了,所以正数范围就少了一个。
少了一个?啥意思 longbangming 发表于 2020-5-31 13:29
少了一个?啥意思
因为int的范围是256,正数范围是1-128,而负数范围要容下一个0,
所以会少一个。 这得分有符号(signed)和无符号(unsigned).
signed里有一个符号位,表示正数负数,它位于二进制数的最前面.
而一般我们直接int a是默认为有符号整型. qiuyouzhi 发表于 2020-5-31 13:41
因为int的范围是256,正数范围是1-128,而负数范围要容下一个0,
所以会少一个。
是正数范围要容下一个0 永恒的蓝色梦想 发表于 2020-5-31 13:49
是正数范围要容下一个0
噢,好的 想象一下,如果让你用二进制的2bit表达数的范围,00、01、10、11,如果10、11表示的是-1、-2的话,00、01只能表示0、1了呀,范围就是-2~1
页:
[1]