我使用以下算法创建随机整数:
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);
我正在使用GCC 3.4.3来编译代码。
有谁知道操作的哪一部分正在触发警告?
答案 0 :(得分:5)
有谁知道操作[
(((int) rand() << 16) & 0xFFFF0000d);
]的哪一部分正在触发警告?
是的,它是0xFFFF0000d
,因为它的大小是36位。请注意,此数字等于0xFFFF0000D
。你可能意味着0xFFFF0000
。
同样,0x0000FFFFd
等于0x0000FFFFD
。你可能意味着0x0000FFFF
。