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

时间:2018-07-29 16:16:05

标签: c++ c gcc bit-shift clang-tidy

我想将long long(一个64位值)分成两个int(每个32位)。为此,我使用“标准方式”将long long右移32位以获取高32位,并将long long强制转换为int以获取低32位。但是,clang-tidy将该移动报告为警告:

  

将带符号整数操作数与二进制按位运算符一起使用

我的代码如下:

void split_long_long(long long value, int &upper, int &lower) {
    upper = (int) (value >> 32); // <- Warning here at "value"
    lower = (int) value;
}

您将如何重写此代码以避免出现警告?

注意写作

void split_long_long(unsigned long long int value, unsigned int &upper, unsigned int &lower) {
    upper = (unsigned int) (value >> 32);
    lower = (unsigned int) value;
}

即使仅使用unsigned个变量,也无法解决该警告。

0 个答案:

没有答案