当前位置: 代码迷 >> 综合 >> PC-Lint代码静态检查之Info 701: Shift left of signed quantity (int)
  详细解决方案

PC-Lint代码静态检查之Info 701: Shift left of signed quantity (int)

热度:98   发布时间:2023-12-18 06:37:20.0

利用PC-Lint进行代码静态分析时,报出以下信息:Info 701: Shift left of signed quantity (int)。从字面上理解这条信息的意思就是:对有符号数(整形)进行了左移。然而,我check的代码如下(代码中的uint16_t其实就是unsigned short):

uint16_t index = 1;
uint16_t data;
data = ((uint16_t)1 << index);

明明是对无符号数进行的移位,为什么还会报出这条信息,真是百思不得其解,后来将这里的“(uint16_t)1”改为“(uint32_t)1”(uint32_t其实就是unsigned long),就没有报出这条信息了。在网上查了半天资料,终于查到了一些有用的说明,如下图所述。
这里写图片描述

意思是说对于上述代码中的移位操作,由于“(uint16_t)1”的长度小于int的长度,因而会强制转换为signed int类型。这样的话,报出上述信息便不难理解了。

  相关解决方案