我希望-2147483648可以容纳4个字节,因为它是用2的补码表示的。
我错过了什么吗?
INT MIN: -2147483648
INT MAX: 2147483647
sizeof -2147483647: 4
sizeof 2147483647: 4
sizeof -2147483648: 8
sizeof 2147483648: 8
答案 0 :(得分:6)
-2147483648
在您的平台上为2147483648
,long
个数字(因为它的小数*大于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根据文字的基数而有所不同。