关于C语言强制类型转换的一个疑问

[复制链接]
查看11 | 回复2 | 2010-12-25 13:45:50 | 显示全部楼层 |阅读模式
有下面一段代码 :
unsigned short uint16 = 0x0100;
unsigned char uint08 = (unsigned char)(uint16);
我在自己的机器上测试一下, uint08的值为0, 我的机器为小端字节序, 那么如果是大端的话, uint08的值应该是0呢还是1???
还望赐教!!

回复

使用道具 举报

千问 | 2010-12-25 13:45:50 | 显示全部楼层
一楼的答案明显是错的你这个是值之间的强转,和大端小断无关,如果是指针强转才会有问题unsigned short转成unsigned char都是取变量的低八位,结果仍然为0x00只有下面这样指针强转unsigned char uint08 = (unsigned char)(unsigned char *)&uint16结果才会是0x01
回复

使用道具 举报

千问 | 2010-12-25 13:45:50 | 显示全部楼层
值是1。。大端是把低字节数据存到高地址内存上,因此和你先前的就反过来了。存的是0x01
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行