#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX-1)
我在看csapp这本书的时候,发现作者提出了这个问题,但是我不明白为什么要这么定义。直接用-2147483647定义有什么区别?
#include <stdio.h>
int main() {
printf("%d, %d\n",-2147483647-1, sizeof(-2147483647-1));
printf("%d, %d\n",-2147483648, sizeof(-2147483648));
return 0;
}
输出:
-2147483648, 4
-2147483648, 8
在标准中说:
整数常量以数字开头,但没有句点或指数部分。它可能有一个指定其基数的前缀和一个指定其类型的后缀。
所以对于
-2147483648
,编译器将使用2147483648
部分来确定它的类型,这将是long int,那么sizeof(MIN_INT)将是8,这是错误的。