首页 > 解决方案 > 是否需要使整数文字无符号?

问题描述

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

static constexpr std::size_t value = 1024u;

我知道这u是指定1024为无符号整数,但为什么要麻烦标记为unsigned

标签: c++

解决方案


在您的情况下编写根本没有意义,u因为编译器将进行概念转换。这是一个坏习惯,因为它可能会引入可移植性问题。

不过偶尔有必要:std::accumulate是一个重要的例子——初始值的类型就是结果的类型。

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

参考:https ://en.cppreference.com/w/cpp/language/integer_literal


推荐阅读