int main() {
uint64_t k = 1 << 32;
return 0;
}
我嘗試做此操作(因爲我希望k
爲64位寬,但我得到一個關於超過寬度的警告。難道我錯了東西uint64_t
永遠是64位?uint64_t只有32位寬?
int main() {
uint64_t k = 1 << 32;
return 0;
}
我嘗試做此操作(因爲我希望k
爲64位寬,但我得到一個關於超過寬度的警告。難道我錯了東西uint64_t
永遠是64位?uint64_t只有32位寬?
什麼你如果對操作的結果進行操作對操作的執行沒有影響,那麼C++中的類型規則已經足夠複雜了 - 如果你必須考慮你對結果做了什麼來弄清楚如何執行操作,他們會更加複雜。
你做了1 << 32
。你爲什麼會期望產生一個64位的結果?
嘗試
uint64_t k = 1;
k <<= 32;
或'uint64_t中K = 1ull << 32;' – jaggedSpire
權,有多種方式可以做到這一點。 –
嘗試使* 1個* 64位寬 – jaggedSpire