私の limits.h では、signed long の制限は次のように指定されています - define 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」からのものです