在下面的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正在解决这个问题.

C++相关问答推荐

Mbed TLS:OAEP的就地en—/decryption似乎不起作用'

exit(EXIT_FAILURE):Tcl C API类似功能

标准的C17标准是用括号将参数包装在函数声明中吗

特定闪存扇区的内存别名

如何使用低级C++写出数值

C由四个8位整数组成无符号32位整数

加密解密工作正常,但返回错误0x80090005

在C++中访问双指针

用gcc-msse 2编译的C程序包含AVX 1指令

为什么GCC-O1优化破解了这个代码,为了一个GameBoy高级只读存储器而修改了VRAM的循环?

具有正确标头的C struct 定义问题

CS50 pset 5的皱眉脸正确地处理了大多数基本单词,并且拼写判断不区分大小写.

当我将偏移量更改为任何非零值时,C中的mmap共享内存出现无效参数错误

在NASM中链接Linux共享库时出错-';将R_ X86_64_;foo';

C 程序不显示任何输出,但它接受 CS50 Lab1 的输入问题

execve 不给出which命令的输出

将指针的地址加载到寄存器内联拇指组件中

GnuCobol 使用 double 类型的参数调用 C 函数

GDB 跳过动态加载器代码

无法在 C 中打开文本文件,我想从中读取文本作为数据并将其写入数组