lstcspring的个人空间 https://passport2.21ic.com/?512535 [收藏] [复制] [RSS]

日志

keil c warning: #1134-D: literal treated as "long long"

已有 1101 次阅读2016-10-10 15:18 |个人分类:C/C++|系统分类:兴趣爱好| warning, 1134

在Keil MDKARM中
unsigned int value2=0x80000000;
unsigned int value4=2147483648;
value2编译时不产生警告,而value4就产生警告
main.c(17): warning:  #1134-D: literal treated as "long long"
 
解决方法:
 
关键是2147483648是一个字面常量,类型是int型,而不是unsigned int.
上面这个语句,需要先将int类型,转换成unsigned int类型,再赋值给value4;
在转换过程中,因为这个数值超过32位int类型的表示范围,所以会出现你所见到的那个警告.
 
unsigned int value2=0x80000000;
0x80000000;字面类型是unsigned的,所以在32位的表示范围之内.
 
如果你想要明白告诉编译器,2147483648就是unsigned 类型,你可以这么做.
unsigned int value4=2147483648u;


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)