uint64_t只有32位宽?

时间:2016-10-05 18:27:58

标签: c++

int main() {
    uint64_t k = 1 << 32;
    return 0;
}

我尝试执行此操作(因为我希望k为64位宽,但我会收到超出宽度的警告。我错误的事情uint64_t总是64位吗?

1 个答案:

答案 0 :(得分:4)

您对操作结果执行的操作不会影响该操作的执行方式。 C ++中的类型规则已经足够复杂 - 如果你必须考虑你对结果做了什么来弄清楚如何执行操作,它们会复杂得多。

你做过1 << 32。为什么你会期望产生64位结果呢?

尝试

uint64_t k = 1;
k <<= 32;