我们可以在<limits.h>文件中看到
#define INT_MIN ( -INT_MAX - 1)
这是因为,对于INT_MAX 2147483647
INT_MIN = -2147483648
对于-2147483648,C/C++中这是一个常量表达式,由一元负运算符“-” 和一个常量”2147483648“组成,而2147483648超出了int的最大表示范围
而常量类型的匹配规则按照int ,unsigned int, long.......这个顺序进行匹配,所以2147483648为unsigned int类型,对unsigned int使用一元负运算符“-”会得到一个错误