【发布时间】:2016-04-17 17:51:53
【问题描述】:
uint64_t x(1 << 35) 将输出作为0 给出一个警告。什么最适合初始化如此大的值?
【问题讨论】:
-
使用正确类型的字面量,
1ULL << 35表达式不会溢出,因为左侧是一个足够大的类型 -
(static_cast<uint64_t>(1) << 35)怎么样? -
在C++11及以后也可以定义new literals for the types in
<cstdint>来避免此类问题。