对于“long”类型,整数常量太大

时间:2012-10-08 22:34:46

标签: c random

我使用以下算法创建随机整数:

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来编译代码。

有谁知道操作的哪一部分正在触发警告?

1 个答案:

答案 0 :(得分:5)

  

有谁知道操作[(((int) rand() << 16) & 0xFFFF0000d);]的哪一部分正在触发警告?

是的,它是0xFFFF0000d,因为它的大小是36位。请注意,此数字等于0xFFFF0000D。你可能意味着0xFFFF0000

同样,0x0000FFFFd等于0x0000FFFFD。你可能意味着0x0000FFFF