我看到很多代码都在做类似的事情,

static constexpr std::size_t value = 1024u;

我知道u1024指定为无符号整数,但是为什么还要麻烦将其标记为unsigned呢?

最佳答案

在您的情况下,编写u毫无意义,因为编译器将进行概念上的转换。混入一个可引入可移植性问题的粗俗习惯是一个坏习惯。

不过,有时还是有必要:std::accumulate是一个重要示例-初始值的类型就是结果的类型。

如果您使用auto,那么您会发现规则变得非常复杂。例如,如果您使用十六进制文字,那么unsigned类型将成为候选类型。

引用:https://en.cppreference.com/w/cpp/language/integer_literal

10-08 08:33
查看更多