【发布时间】:2019-08-22 12:22:38
【问题描述】:
我对@987654328@ 有点乱七八糟,很好奇当我将位流出到左侧并发现时会发生什么
uint8_t i = 234;
uint8_t j = (i << 1);
auto k = (i << 1);
std::cout << (int)j << std::endl;
std::cout << k << std::endl;
打印出来
212
468
而不是预期的
212
212
似乎<< 确实提升了uint8_t 一些更广泛的整数类型。为什么会这样?
Here 一个你可以看到它的链接
【问题讨论】:
-
如果不将
uint8_t提升为int,您似乎几乎无能为力。 -
c 的类似问题:stackoverflow.com/questions/11203015/…。我认为在 C++ 中是一样的
-
因为标准是这样说的...对于某些微控制器,您可以选择禁用此类促销以提高效率(并且不符合规范。
-
@500-InternalServerError 我不同意 - 你可以用它做更多,而不是用
int! ;)