为什么我的机器上的INT_MIN和它的正对应尺寸完全相同?

时间:2018-05-28 17:45:06

标签: c

我希望-2147483648可以容纳4个字节,因为它是用2的补码表示的。

我错过了什么吗?

INT MIN: -2147483648
INT MAX: 2147483647
sizeof -2147483647: 4 
sizeof 2147483647: 4 
sizeof -2147483648: 8
sizeof 2147483648: 8

1 个答案:

答案 0 :(得分:6)

-2147483648在您的平台上为2147483648long个数字(因为它的小数*大于INT_MAX,适合long ),否定。 C(和C预处理器)中的数字与-一元运算符分开解析。这就是为什么标准C库的glibc实现将INT_MIN宏实现为(-INT_MAX - 1)

* rules determining what type to use for an integer literal with or without a suffix根据文字的基数而有所不同。