次のアルゴリズムでランダムな整数を作成しています。
int random;
int i;
for (i = 0; i < RANDOM_COUNT; i++) {
random = (((int) rand() << 0) & 0x0000FFFFd)
| (((int) rand() << 16) & 0xFFFF0000d);
fprintf(outputFile, " %d\n", random);
}
次の警告が表示されます。
warning: integer constant is too large for "long" type
この行で:
| (((int) rand() << 16) & 0xFFFF0000d);
GCC3.4.3を使用してコードをコンパイルしています。
操作のどの部分が警告をトリガーしているのか誰かが知っていますか?