我看到很多代码都在做类似的事情,
static constexpr std::size_t value = 1024u;
我知道
u
将1024
指定为无符号整数,但是为什么还要麻烦将其标记为unsigned
呢? 最佳答案
在您的情况下,编写u
毫无意义,因为编译器将进行概念上的转换。混入一个可引入可移植性问题的粗俗习惯是一个坏习惯。
不过,有时还是有必要:std::accumulate
是一个重要示例-初始值的类型就是结果的类型。
如果您使用auto
,那么您会发现规则变得非常复杂。例如,如果您使用十六进制文字,那么unsigned
类型将成为候选类型。
引用:https://en.cppreference.com/w/cpp/language/integer_literal