打印

关于类型转换问题请教

[复制链接]
1299|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pufan|  楼主 | 2008-4-16 14:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>

void main()
{
    unsigned char temp[4]={0xaa,0xbb,0xcc,0xdd};
    unsigned long int temp1;
    temp1 = (temp[0]<<24)|(temp[1]<<16)|(temp[2]<<8)|temp[3];
    
}

如程序,我的需求是要求temp1=0xaabbccdd,但是答到的却是0x0000ccdd,为什么?
请高手指点

相关帖子

沙发
westsfw| | 2008-4-16 16:14 | 只看该作者

强制类型转换就OK了.

强制类型转换就OK了.

使用特权

评论回复
板凳
mohanwei| | 2008-4-16 16:23 | 只看该作者

溢出了。uchar再移位时,要先强制转换为ulong

使用特权

评论回复
地板
computer00| | 2008-4-16 16:25 | 只看该作者

一条条来,别弄这么长的语句

temp1=temp[0];
temp1<<=8;
temp1+=temp[1];
temp1<<=8;
temp1+=temp[2];
temp1<<=8;
temp1+=temp[3];

使用特权

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

本版积分规则

5

主题

41

帖子

0

粉丝