C 中常量 INT_MAX 和 INT_MIN 分别表示最大、最小整数,定义在头文件 limits.h 中。
1. INT_MAX,INT_MIN 数值大小
因为 int 占 4 字节 32 位,根据二进制编码的规则,INT_MAX = 2^31-1,INT_MIN= -2^31.C/C++ 中,所有超过该限值的数,都会出现溢出,出现 warning,但是并不会出现 error。如果想表示的整数超过了该限值,可以使用长整型 long long 占 8 字节 64 位。
2. 关于 INT_MAX INT_MIN 的运算
由于二进制编码按原码、补码和反码的规则进行运算,所有程序中对 INT_MAX 和 INT_MIN 的运算应当格外注意,在出现溢出的时候,不遵循数学规则。
INT_MAX + 1 = INT_MIN
INT_MIN - 1 = INT_MAX
abs(INT_MIN) = INT_MIN
比较有趣的是,INT_MAX + 1 < INT_MAX, INT_MIN - 1 > INT_MIN, abs(INT_MIN) < 0.