[ZLG-ARM] 数据转换警告疑问

[复制链接]
2817|4
 楼主| xiuzhou 发表于 2008-1-8 14:36 | 显示全部楼层 |阅读模式
在ADS1.2中出现了这样的警告:Warning&nbsp;:&nbsp;C2921W:&nbsp;'=':&nbsp;implicit&nbsp;narrowing&nbsp;cast&nbsp;from&nbsp;'int'&nbsp;to&nbsp;'unsigned&nbsp;char'<br />main.c&nbsp;line&nbsp;813&nbsp;&nbsp;&nbsp;<br /><br />程序如下:<br />int&nbsp;main(&nbsp;void&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;ch1,&nbsp;ch2;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ch1&nbsp;=&nbsp;ch2&nbsp;+&nbsp;1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;returen&nbsp;0;<br />}<br />如果是ch1&nbsp;=&nbsp;(&nbsp;unsigned&nbsp;char&nbsp;)(&nbsp;ch2&nbsp;+&nbsp;1&nbsp;);得话就没有警告了。<br />是不是可以这样理解,在ARM中,只要进行数据运算,所有变量都是按照默认的32位int类型进行处理,因此虽然定义时为unsigned&nbsp;char&nbsp;类型,但得到的结果是int型,需要显示的进行类型转化?<br />不知道我上面的理解对不对,望各位指点,谢谢!
zlgarm 发表于 2008-1-8 14:55 | 显示全部楼层

程序问题

&nbsp;xiuzhou&nbsp;您好;<br /><br />你的理解基本是对的,不过这不是ARM独有的,是C语言的标准,对于ADS编译器来说他必须遵循这个,但到硬件层面上来说都一样.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_zhp
 楼主| xiuzhou 发表于 2008-1-8 14:57 | 显示全部楼层

谢谢zlgarm_zhp的解答!

  
wlsui 发表于 2008-1-8 23:21 | 显示全部楼层

实际上,楼主的理解是错的:

呵呵:<br />要是“只要进行数据运算,所有变量都是按照默认的32位int类型进行处理”,那还要unsigned&nbsp;char这一数据类型做什么?
computer00 发表于 2008-1-9 00:34 | 显示全部楼层

呵呵,因为后面的1是int型的...运算时强制类型转换了下

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

33

帖子

1

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