读书人

一个关于的union小疑点

发布时间: 2012-10-16 09:57:37 作者: rapoo

一个关于的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] |
---------
[解决办法]
说明你理解错误

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

读书人网 >C语言

热点推荐