c++ - 指定整数数字的无符号字符存储

标签 c++ literals

就现代C++而言,是否可以指定将整数存储为字符?

我希望编写 auto var = 255; 将 var 初始化为 unsigned char 类型

可以指定其他类型的存储:

auto var_ulong = 255ul;
auto var_float = 255.f;

但是,不是short或者char?我肯定错过了一些东西......

最佳答案

没有标准的整数文字来执行您想要的操作,但您可以添加自己的 user- defined literal如果您打算经常这样做:

namespace foo {

// constexpr pre C++20
//  |
//  V 
consteval unsigned char operator"" _uchar(unsigned long long x) {
    return static_cast<unsigned char>(x);
}

}
using namespace foo;
auto var_uchar = 255_uchar;

请注意,正常的整数提升仍然有效,因此在下面,您将得到一个 int:

auto var_int = 55_uchar + 10_uchar;

关于c++ - 指定整数数字的无符号字符存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64018790/

相关文章:

c++ - 在 gcc 上使用 addcarry 得到奇怪的优化结果

Java Thread.sleep long 还是 int?

c - 文字字符串放在哪里,为什么我可以返回指向它们的指针?

arrays - 如何在 VB.NET 中声明内联数组

c# - 在 C# 中按字面表示字符串对列表的最简单方法?

c++ - nghttp2-asio:在 header 中设置内容类型的正确方法

c++ - 尝试编译一个qt项目,在各个地方出现输入/输出错误

c++ - 打开优化(O1 或 O2 或 O3)时程序卡在 pthread_spin_unlock 语句

c++ - C++代码中的 undefined reference 错误

go - 使用嵌入式结构构造结构文字