main()
{union
{
int i[2];
long k;
char c[4];
} r,*S=&r;
s->i[0]=0x39;s->i[1]=0x38;
printf("%x\n",s->c[0]);
}
誰能詳細(xì)給我解答一下怎么來的。答案是39。沒看懂答案說什么高8位低8位
1 回答
已采納

asd8532
TA貢獻(xiàn)143條經(jīng)驗(yàn) 獲得超187個贊
int類型的變量占2/4個字節(jié),1個字節(jié)占8個bit位,所以s->i[0]=0x39,內(nèi)存中的二進(jìn)制值應(yīng)該是
00111001 00000000
然后s->i[1]=0x38,內(nèi)存中的值為:
00111000 00000000
而一個char類型的變量只占1個字節(jié),所以字符數(shù)組C中的值的對應(yīng)情況應(yīng)該是
c[0] = 00111001 =39
c[1] = 00000000 = 0
c[2] = 00111000 =38
c[3] = 00000000 = 0
所以輸出c[0]的值就是00111001,轉(zhuǎn)換成16進(jìn)制就是39(%x的意思就是16進(jìn)制顯示)
- 1 回答
- 0 關(guān)注
- 1915 瀏覽
添加回答
舉報
0/150
提交
取消