2016-10-05 46 views
-1
int main() { 
    uint64_t k = 1 << 32; 
    return 0; 
} 

我嘗試做此操作(因爲我希望k爲64位寬,但我得到一個關於超過寬度的警告。難道我錯了東西uint64_t永遠是64位?uint64_t只有32位寬?

+14

嘗試使* 1個* 64位寬 – jaggedSpire

回答

4

什麼你如果對操作的結果進行操作對操作的執行沒有影響,那麼C++中的類型規則已經足夠複雜了 - 如果你必須考慮你對結果做了什麼來弄清楚如何執行操作,他們會更加複雜。

你做了1 << 32。你爲什麼會期望產生一個64位的結果?

嘗試

uint64_t k = 1; 
k <<= 32; 
+0

或'uint64_t中K = 1ull << 32;' – jaggedSpire

+0

權,有多種方式可以做到這一點。 –