int main() {
uint64_t k = 1 << 32;
return 0;
}
我尝试执行此操作(因为我希望k
为64位宽,但我会收到超出宽度的警告。我错误的事情uint64_t
总是64位吗?
答案 0 :(得分:4)
您对操作结果执行的操作不会影响该操作的执行方式。 C ++中的类型规则已经足够复杂 - 如果你必须考虑你对结果做了什么来弄清楚如何执行操作,它们会复杂得多。
你做过1 << 32
。为什么你会期望产生64位结果呢?
尝试
uint64_t k = 1;
k <<= 32;