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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值