小标
2019-01-07
来源 :
阅读 1881
评论 0
摘要:本文主要向大家介绍了【云计算】PClint的局限介绍,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
本文主要向大家介绍了【云计算】PClint的局限介绍,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
问题
线上出现一个bug,把一个很大数赋值给一个32bit数导致,下面做了一个测试,对于这种溢出问题
测试代码
#include
#define KK 1
int main()
{
unsigned int i,k,m;
unsigned int j= 1;
k=0x12345678*100;
i=j*0x12345678*100;
m=KK*0x12345678*100;
return 0;
}
pclint检查结果
--- Module: diy64.c (C)
1 /* Enter your 64-bit C code here - you can delete this line. */
2
3 #include
4 #define KK 1
5 int main()
6 {
7 unsigned int i,k,m;
8 unsigned int j= 1;
9
_
10 k=0x12345678*100;
diy64.c 10 Warning 648: Overflow in computing constant for operation: 'multiplication'
11 i=j*0x12345678*100;
_
12 m=KK*0x12345678*100;
diy64.c 12 Warning 648: Overflow in computing constant for operation: 'multiplication'
_
13 return 0;
diy64.c 13 Warning 438: Last value assigned to variable 'i' (defined at line 7) not used
diy64.c 13 Warning 438: Last value assigned to variable 'k' (defined at line 7) not used
diy64.c 13 Warning 438: Last value assigned to variable 'm' (defined at line 7) not used
_
14 }
diy64.c 14 Warning 550: Symbol 'i' (line 7) not accessed
diy64.c 14 Warning 550: Symbol 'k' (line 7) not accessed
diy64.c 14 Warning 550: Symbol 'm' (line 7) not accessed
结论
只能针对确定性运算结果是常数提示,其中运算过程不能含有变量
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号