我想将 a long long
(一个 64 位值)拆分为两个int
s (每个 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
变量在使用,也不能修复警告。