首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个关于的union小疑点

2012-10-16 
一个关于的union小问题C/C++ code#includestdio.hunion{int iunsigned char ch[2]}studentint main()

一个关于的union小问题

C/C++ code
#include<stdio.h>union{          int i;          unsigned char ch[2];  }student;      int main()  {      //union Student  student;      student.i=0x1420;      printf("%d  %d",student.ch[0],student.ch[1]);      return 0;  }  

这个我的理解应该是输出20 32 结果是32 20 这是怎么回事啊?

[解决办法]
大小端模式。
[解决办法]
从低地址到搞地址,这个union存储是:20 14 00 00,so
十进制输出就是32,20
[解决办法]
小段模式
地址A
----------------------------------
|A |A+1 |A+2 |A+3 | int a;对应右边:(A)20 (A+1)14 (A+2)00 (A+3)00
|0x01 |0x00 |0x00 |0x00 |
-----------------------------------
|A |A+1 char b;
| ch[0] |ch[1] |
---------
[解决办法]
说明你理解错误

小端 -- 数据的低位存储在低地址处

热点排行