搜索
bottom↓
回复: 2

请问下,关于数据类型转换的问题。。

[复制链接]

出0入0汤圆

发表于 2010-10-26 16:52:01 | 显示全部楼层 |阅读模式
使用的是NEC的K0系列的单片机+IAR4.62
在使用中发现一个很奇怪的问题。。。
比如定义了一个数组unsigned char a[] = {0x01,0x02,0x03,0x04,0x05};和一个unsigned int b;
想把其中的数据转换为16位数据时。                           
比如 b = *((unsigned int)(a+1));得到的结果是0x0203
而b = *((unsigned int)(a+2))得到的结果是0x0203

这是怎么回事呢,是程序写法不对,还是编译器设置问题,还是因为单片机的问题呢。。。
知道的朋友帮忙解释下,谢谢!

//上面写错了。。。
//之前写错了,实际如下
unsigned char a[] = {0x01,0x02,0x03,0x04,0x05};
unsigned int b;
b = *((unsigned int*)(a+1));得到的结果是0x0302
b = *((unsigned int*)(a+2));得到的结果是0x0203

出0入0汤圆

发表于 2010-10-26 17:12:57 | 显示全部楼层
语法错误。类型不匹配。

    unsigned char a[] = {0x01,0x02,0x03,0x04,0x05};
    unsigned int b,c;
    b = *((unsigned int *)(a+1));
    c = *((unsigned int *)(a+2));
这样 b中的值是 0x0302
     c中的值是 0x0403

(unsigned int *) (a+2) 含义是 对unsigned char类型的地址 (a+2)强迫成 unsigned int 类型的地址

出0入0汤圆

 楼主| 发表于 2010-10-26 17:18:32 | 显示全部楼层
回复【1楼】xuesheng  
-----------------------------------------------------------------------

谢谢,是我把问题发错了。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 08:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表