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]);
}
誰能詳細給我解答一下怎么來的。答案是39。沒看懂答案說什么高8位低8位
1 回答
已采納

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