2012-10-08 41 views
3

我創建隨機整數以下算法太大:整型常量是「長」型

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);

I我正在使用GCC 3.4.3來編譯代碼。

有誰知道哪部分操作會觸發警告?

回答

5

有沒有人知道哪一部分操作[(((int) rand() << 16) & 0xFFFF0000d);]觸發警告?

是的,這是0xFFFF0000d,因爲它的大小是36位。請注意,這個數字等於0xFFFF0000D。你可能意思是0xFFFF0000。同樣,0x0000FFFFd等於0x0000FFFFD。你的意思可能是0x0000FFFF