以auto var = 5u;为例。在这里,我使用后缀u,因此var将被推导为unsigned int。对于uint32_t或uint64_t类型,有什么方法可以实现类似的功能吗?C++11或C++14中是否有后缀?
发布于 2019-01-09 01:07:46
我假设您正在使用Herb Sutter建议的AAA style。
在这种情况下,一个很好的解决方案是简单地编写:
auto variable_name = uint64_t{ 5000000000 };这是明确的、一致的、显式类型的,不需要讨厌的C预处理器。
编辑:如果您想在使用文字时绝对确定,可以将an appropriate suffix添加到整数文字,以确保足够大的范围,同时仍然显式地键入变量。
发布于 2019-01-11 07:32:30
您可以随时定义自己的后缀
#include <cstdint>
#include <type_traits>
uint32_t operator ""_u32 (unsigned long long v) { return uint32_t (v); }
int main ()
{
auto v = 10_u32;
static_assert (std::is_same <decltype (v), uint32_t>::value);
}https://stackoverflow.com/questions/54096097
复制相似问题