首页 > 解决方案 > 如何将按位运算符与 unsigned char 数据类型一起使用?

问题描述

考虑以下代码:

uint8_t a = 0xFF;
uint64_t b = a << 8u | 0xFFu;

我在第 2 行第 14 列收到以下消息。

Clang-Tidy:将带符号整数操作数与二进制位运算符一起使用

这不是一个错误,我认为这只是一个警告。

变量a是一个uint8_t与 相同的unsigned char。如果变量a是,也会发生同样的事情uint16_t。但是,如果变量auint32_t,那就没问题了。这是正确的还是我错过了什么?为什么按位运算符只能与uint32_t数据类型一起使用?

在这种情况下如何使用按位运算符?我应该使用static_cast<uint32_t>(a)吗?

标签: c++clangbit-manipulationbit-shiftbitwise-or

解决方案


推荐阅读