【问题标题】:integer constant is too large for "long" type整数常量对于“long”类型来说太大了
【发布时间】:2012-10-09 10:42:21
【问题描述】:

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

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() &lt;&lt; 16) &amp; 0xFFFF0000d);

我正在使用 GCC 3.4.3 编译代码。

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

【问题讨论】:

    标签: c random


    【解决方案1】:

    有谁知道操作 [(((int) rand() &lt;&lt; 16) &amp; 0xFFFF0000d);] 的哪个部分触发了警告?

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

    同样,0x0000FFFFd 等于 0x0000FFFFD。你的意思可能是0x0000FFFF

    【讨论】:

      猜你喜欢
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      相关资源
      最近更新 更多