在下面的C代码片段中,检查是否设置了16位序列的前两位:

bool is_pointer(unsigned short int sequence) {
  return (sequence >> 14) == 3;
}

CLion的Clang-Tidy给我一个“使用带符号的整数操作数和二进制按位运算符”的警告,我不明白为什么。 unsigned short是否不够签名?

最佳答案

The code for this warning检查按位运算符的任何一个操作数是否被签名。不是sequence引起警告,而是14,您可以通过在末尾附加14来使u无符号来缓解此问题。

(sequence >> 14u)
这个警告是不好的。如Roland's answer所述,CLion正在解决此问题。

关于c - “Use of a signed integer operand with a binary bitwise operator”-使用unsigned short时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50399090/

10-12 20:36