为整数指定无符号字符存储

问题描述

就现代C ++而言,是否可以指定将整数存储到char中?

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

可以指定其他存储类型:

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

但是,不是short还是char?我肯定会丢失一些东西...

解决方法

没有标准的整数文字可以做您想要的事情,但是如果您打算做很多事情,可以添加自己的user- defined literal

library(dplyr)

df1 %>%
  tidyr::pivot_longer(cols = everything(),names_to = 'Name') %>%
  inner_join(df2,by = 'Name') %>%
  group_by(Name) %>%
  summarise(Value = any(value > Limit))

#  Name   Value
#  <chr>  <lgl>
#1 Value1 FALSE
#2 Value2 TRUE 
#3 Value3 TRUE 
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