[ZLG-ARM] Keil MDKARM 编译问题求教!

[复制链接]
4650|3
 楼主| wickman.wu 发表于 2007-11-22 16:15 | 显示全部楼层 |阅读模式
在Keil&nbsp;MDKARM中<br />unsigned&nbsp;int&nbsp;value2=0x80000000;<br />unsigned&nbsp;int&nbsp;value4=2147483648;<br />value2编译时不产生警告,而value4就产生警告<br />main.c(17):&nbsp;warning:&nbsp;&nbsp;#1134-D:&nbsp;literal&nbsp;treated&nbsp;as&nbsp;&quot;long&nbsp;long&quot;<br />请问这是为什么?
lenglx 发表于 2007-11-22 18:11 | 显示全部楼层

这难道不正常嘛?

unsigned&nbsp;int&nbsp;value4=2147483648;<br /><br />关键是2147483648是一个字面常量,类型是int型,而不是unsigned&nbsp;int.<br />上面这个语句,需要先将int类型,转换成unsigned&nbsp;int类型,再赋值给value4;<br />在转换过程中,因为这个数值超过32位int类型的表示范围,所以会出现你所见到的那个警告.<br /><br />unsigned&nbsp;int&nbsp;value2=0x80000000;<br />0x80000000;字面类型是unsigned的,所以在32位的表示范围之内.<br /><br />如果你想要明白告诉编译器,2147483648就是unsigned&nbsp;类型,你可以这么做.<br />unsigned&nbsp;int&nbsp;value4=2147483648u;
 楼主| wickman.wu 发表于 2007-11-23 10:41 | 显示全部楼层

非常感谢!

虽然已经知道原因,但还是要感谢lenglx的详细解释!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

23

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部