打印
[ZLG-ARM]

数据转换警告疑问

[复制链接]
2072|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiuzhou|  楼主 | 2008-1-8 14:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在ADS1.2中出现了这样的警告:Warning : C2921W: '=': implicit narrowing cast from 'int' to 'unsigned char'
main.c line 813   

程序如下:
int main( void )
{
    unsigned char ch1, ch2;

    ch1 = ch2 + 1;

    returen 0;
}
如果是ch1 = ( unsigned char )( ch2 + 1 );得话就没有警告了。
是不是可以这样理解,在ARM中,只要进行数据运算,所有变量都是按照默认的32位int类型进行处理,因此虽然定义时为unsigned char 类型,但得到的结果是int型,需要显示的进行类型转化?
不知道我上面的理解对不对,望各位指点,谢谢!

相关帖子

沙发
zlgarm| | 2008-1-8 14:55 | 只看该作者

程序问题

 xiuzhou 您好;

你的理解基本是对的,不过这不是ARM独有的,是C语言的标准,对于ADS编译器来说他必须遵循这个,但到硬件层面上来说都一样.
                       
                                            By zlgarm_zhp

使用特权

评论回复
板凳
xiuzhou|  楼主 | 2008-1-8 14:57 | 只看该作者

谢谢zlgarm_zhp的解答!

使用特权

评论回复
地板
wlsui| | 2008-1-8 23:21 | 只看该作者

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

呵呵:
要是“只要进行数据运算,所有变量都是按照默认的32位int类型进行处理”,那还要unsigned char这一数据类型做什么?

使用特权

评论回复
5
computer00| | 2008-1-9 00:34 | 只看该作者

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

33

帖子

1

粉丝