在我的limits.h中,有符号长整数的限制为 - 定义LONG_MAX 2147483647L
但是,以下代码行会导致“表达式中的整数溢出”警告但程序运行文件并产生预期值。
long universe_of_defects = 1L * 1024L * 1024L * 1024L * 2L - 1L;
printf("The entire universe has %ld bugs.\n", universe_of_defects);
打印的值为 - 2147483647
那么这个警告的原因是什么以及如何解决呢?我有 GCC - gcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
注意 - 代码来自“Learn C the hard way”