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

来源:互联网 发布:python 微信报警接口 编辑:程序博客网 时间:2024/05/29 03:35

利用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类型。这样的话,报出上述信息便不难理解了。

原创粉丝点击