为整数指定 unsigned char 存储
Specifying unsigned char storage for integer numerals
就现代 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++ 而言,是否可以指定将整数存储为字符?
我希望编写 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;