#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 關注
- 713 瀏覽
添加回答
舉報
0/150
提交
取消