在下面的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/