#include<stdio.h>main(){union{short i[2];long k;char c[4];}r,*s=&r;s->i[0]=0x39; s->i[1]=0x38;printf("%x\n",s->c[0]);}
2 回答
四季花海
TA贡献1811条经验 获得超5个赞
共用体
是一个
对于同一段数据
以多种不同的角度去看待的用的。
共用体长度
是4字节,也就是
你是怎么去看待这4字节里的数据的
s->i[0]=0x39;
/*
按照整型成员的类型赋值
*/
s->i[1]=0x38;
是不会被替换掉的。
这个共用体是由两个int组成的长度。
你可以认为是
前两个字节的值是0x39后两个字节的值是0x38
慕森王
TA贡献1777条经验 获得超3个赞
我感觉你这个问题,应该是你没理解联合体的含义,你这个联合体里的元素是i[2]、k、c[4],在内存中的某一时刻他们三个中只能存在一个,而你的实验写的是其中的一个元素i[2]的子元素,所以对于联合体来说他还是他的i【2】元素,你没分清联合体的元素。
- 2 回答
- 0 关注
- 612 浏览
添加回答
举报
0/150
提交
取消