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

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

類型轉(zhuǎn)換問題

類型轉(zhuǎn)換問題

寶慕林4294392 2019-04-21 20:19:50
unsignedu=10;inti=-42;cout
查看完整描述

2 回答

?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

cout<
以32位機(jī)器為例,int能表示的最大值為2^32-1,最小值為-2^32。超過這個(gè)區(qū)間的int會溢出。這里,i=-42,顯然不會溢出。兩個(gè)int相加,結(jié)果還是int,所以得到-84是理所當(dāng)然。
cout<
這里是unsignedint和int相加,兩種不同的類型相加,編譯器會做隱式類型轉(zhuǎn)換。怎樣轉(zhuǎn)換?把有符號的轉(zhuǎn)為無符號的!所以,這行代碼相當(dāng)于:
cout<
關(guān)鍵問題是,怎樣把int轉(zhuǎn)為unsignedint?
計(jì)算機(jī)用補(bǔ)碼表示負(fù)數(shù),以整形i=-42為例,它在32位計(jì)算機(jī)中的補(bǔ)碼表示為:11111111111111111111111111010110(如果按照16進(jìn)制,則表示為:FFFFFFD6)
所謂某個(gè)變量是int還是unsignedint,在計(jì)算機(jī)看來都是一回事。關(guān)鍵在于編譯器怎樣“看待”這個(gè)變量。現(xiàn)在編譯器不把這個(gè)FFFFFFD6當(dāng)int看了,而是要把它當(dāng)unsignedint看待。于是,F(xiàn)FFFFFD6的含義就變成了:
FFFFFFD6=2^31+2^30+...+2^7+2^6+2^4+2^2+2^1=4294967254
也就是說,(int)-42與(unsignedint)4294967254其實(shí)是一回事,只不過編譯器對它們的解釋不同而已。
結(jié)果已經(jīng)很明了:4294967254+10=4294967264,這就是你得到的輸出!
                            
查看完整回答
反對 回復(fù) 2019-04-21
  • 2 回答
  • 0 關(guān)注
  • 348 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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