在下面的C代码段中,判断是否设置了16位序列的前两位:
bool is_pointer(unsigned short int sequence) {
return (sequence >> 14) == 3;
}
CLion的Clang Tidy给了我一个"使用带二进制位运算符的有符号整数操作数"的警告,我不明白为什么.unsigned short
还不够不签名吗?
在下面的C代码段中,判断是否设置了16位序列的前两位:
bool is_pointer(unsigned short int sequence) {
return (sequence >> 14) == 3;
}
CLion的Clang Tidy给了我一个"使用带二进制位运算符的有符号整数操作数"的警告,我不明白为什么.unsigned short
还不够不签名吗?
The code for this warning判断位运算符的either个操作数是否有符号.引起警告的不是sequence
,而是14
,您可以通过在末尾添加u
来取消14
的签名来缓解问题.
(sequence >> 14u)
这个警告很糟糕.正如Roland's answer所描述的,CLion正在解决这个问题.