第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

誰能幫我解釋下這兩題的答案?第一題:34,12;第二題:9?

誰能幫我解釋下這兩題的答案?第一題:34,12;第二題:9?

第一題:#include<iostream.h>#include<iomanip.h>void main(){union{short int i;char s[2];}a;a.i=0x1234;cout<<hex<<(int)a.s[0]<<","<<hex<<(int)a.s[1]<<endl;}第二題:#include<iostream.h>void main(){union{int i[2];long k;char c[4];}r,*s=&r;s->i[0]=0x39;s->i[1]=0x38;cout<<s->c[0]<<endl;}
查看完整描述

1 回答

?
RISEBY

TA貢獻(xiàn)1856條經(jīng)驗 獲得超5個贊

在union中所有成員都是共用一塊內(nèi)存的
所以union使用時理論上只能是其中的一種情況,如第一個例子中,實(shí)際上只有i是有效的,雖然s也可以讀寫,但邏輯上是錯的

由于共用同樣的內(nèi)存,所以當(dāng)用s進(jìn)行讀寫時,實(shí)際讀到的就是i的空間,第一個問題的輸出結(jié)果跟機(jī)器和編譯運(yùn)行環(huán)境有關(guān),看你題目應(yīng)該運(yùn)行在16位系統(tǒng)下,所以int為16位,且存放int時將低8位放在前面,高8位放在后面,s[0]對應(yīng)低8位,s[1]對應(yīng)高8位,同時在輸出的時候還進(jìn)行了從char到int的強(qiáng)制轉(zhuǎn)換,所以輸出34 12
不同系統(tǒng)的位數(shù)不同,比如現(xiàn)在最常見的應(yīng)該是32位,所以在不同機(jī)器上運(yùn)行該代碼結(jié)果可能不同

第二個問題中同樣是內(nèi)存共用,int的存儲也是低8位在前面
所以c[0]對應(yīng)i[0]的低8位為0x39
但這次沒有進(jìn)行強(qiáng)制int轉(zhuǎn)換,所以輸出char,ASCII碼為0x39的char剛好是9,所以輸出9

查看完整回答
反對 回復(fù) 2022-05-16
  • 1 回答
  • 0 關(guān)注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號