【发布时间】:2020-09-22 23:03:23
【问题描述】:
就现代 C++ 而言,是否可以指定将整数存储为 char?
我希望写 auto var = 255; 来将 var 初始化为 unsigned char 类型
可以指定其他类型的存储:
auto var_ulong = 255ul;
auto var_float = 255.f;
但是,不是short 还是char?当然我错过了什么......
【问题讨论】:
-
如果你知道你想要什么类型,你可以声明那个类型。
-
I don't think you are missing anything。你可以施放,但这会破坏使用
auto的意义。也许用户定义的文字会起作用。刚检查。它有效,但它只是一个美化的演员表。 -
short 或 char 没有任何后缀,因为表达式中的所有内容都将提升为 int,因此这些后缀将无用
-
@phuclv 它可以像 OP 想要的那样初始化一个变量。
consteval unsigned char operator"" _uchar(unsigned long long x) { return static_cast<unsigned char>(x); }然后auto var_uchar = 255_uchar;将使var_uchar成为unsigned char。 -
我的简单测试看起来像
constexpr uint8_t operator"" _uc ( unsigned long long int n ) { return static_cast<uint8_t>(n); }并且在 C++ 17 中工作。也就是说,这是我只是避免auto的情况。当我负担得起任何惊喜时,我不会使用auto。