打印
[AVR单片机]

请问:这条语句 *(INT16U *)&buff[4]; 是什么意思?

[复制链接]
4305|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
glen_cao|  楼主 | 2007-8-15 15:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问:这条语句 *(INT16U *)&buff[4]; 是什么意思?
沙发
infree| | 2007-8-15 15:44 | 只看该作者

如果buff数组为字符型

这条语句的意思是取一个整数=buff[4]*256+buff[5];(&buff[4]是取buff[4]的地址,(INT16U *)是将这个地址强制转换成指向INT16U类型数据的指针,最前面的*则是取出这个指针指向的内容)。
如果buff数组为整型,取的就是buff[4].

使用特权

评论回复
板凳
xxo21| | 2007-8-15 20:43 | 只看该作者

补充1点

楼上解释大部分正确
但iar使用小端模式的数据类型,所以整数=buff[5]*256+buff[4];
其它编译器就不知道了

使用特权

评论回复
地板
glen_cao|  楼主 | 2007-8-17 08:09 | 只看该作者

谢谢!

我用的是ICC编译器, 发现结果是buff[5]*256+buff[4];
谢谢!

使用特权

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

本版积分规则

20

主题

61

帖子

0

粉丝