0
我試圖編譯使用RHEL 5.6上的CUDA 3.2編寫的代碼。相關部分是cuda源代碼中的「整數運算結果超出範圍」
extern "C"{
#include <stdio.h>
#include <inttypes.h>
static uint64_t size = 0;
...
size = 5000 * 1024 * 1024;
printf("sizeof(size) = %d size = %lu\n", sizeof(size), size);
}
該代碼位於.cu文件中,並使用nvcc編譯。我得到編譯警告,對於「size = 5000 * 1024 * 1024」這一行,「整數運算結果超出範圍」。我得到的輸出是
sizeof(size) = 8 size = 947912704
我不明白,爲什麼變量「大小」不能代表值5242880000,如果是8個字節大。
謝謝。
我想'5000','1024'和'1024'都被當作'int'文字處理,乘法是在'int's上完成的,然後結果被存儲在' uint64_t'。但那只是我的直覺。嘗試用'L'將後綴中的一個或多個加後綴。 –
就是這樣!謝謝! – Rayne