Core 2 Duo の OS X 10.6 で Xcode を実行しています。短いプログラムは次のとおりです。
#include <stdio.h>
int main () {
long a = 8589934592L;
printf("a = %li\n", a);
return 0;
}
これをコマンド ライン (gcc -pedantic) からコンパイルすると、エラーや警告は表示されません。これを Xcode でデバッグ構成でコンパイルすると、エラーや警告は表示されません。これを Xcode のリリース構成でコンパイルすると、「暗黙の定数変換でオーバーフローが発生しました」という警告が表示されます。
long は 64 ビットである必要があります。そして、プログラムは正常に実行されます。では、何が起こっているのでしょうか? また、この警告を取り除くにはどうすればよいでしょうか?