Cpp-整型上下限INT_MAX和INT_MIN及其运算

INT_MAX,INT_MIN数值大小

因为int占4字节32位,根据二进制编码的规则,INT_MAX = 2^31-1,INT_MIN= -2^31.C/C++中,所有超过该限值的数,都会出现溢出,出现warning,但是并不会出现error。如果想表示的整数超过了该限值,可以使用长整型long long 占8字节64位。

关于INT_MAX INT_MIN的运算

由于二进制编码按原码、补码和反码的规则进行运算,所有程序中对INT_MAX和INT_MIN的运算应当格外注意,在出现溢出的时候,不遵循数学规则。

INT_MAX + 1 = INT_MIN

INT_MIN - 1 = INT_MAX

abs(INT_MIN) = -INT_MIN = INT_MIN

另外要注意的是: INT_MAX + 1 < INT_MAX, INT_MIN - 1 > INT_MIN, abs(INT_MIN) < 0.

虽然abs(INT_MIN) = -INT_MIN = INT_MIN, 但是可以利用unsigned int来获取最小负值的绝对值:

1
unsigned int un = abs(INT_MIN)  // un = 2147483648