一个关于的union小疑点
一个关于的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] |
---------
[解决办法]说明你理解错误
小端 -- 数据的低位存储在低地址处