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

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

如何理解下面這段話,第二段為什么會說是short被轉(zhuǎn)換給了int?

如何理解下面這段話,第二段為什么會說是short被轉(zhuǎn)換給了int?

C++
慕尼黑5688855 2022-05-12 19:11:19
short chickens=20;short ducks=35;short fowl=chickens+ducks;為執(zhí)行第三條語句,程序先取得chickens和ducks的值并轉(zhuǎn)換為int;然后程序?qū)⒔Y(jié)果轉(zhuǎn)換為short類型(將轉(zhuǎn)換的int值賦給short類型的變量)【還有其他一些整型提升:如果short比int短,則unsigned short類型將被轉(zhuǎn)換為int;如果兩種類型的長度相同,則unsigned short類型將被轉(zhuǎn)換為unsigned int。這種規(guī)則確保了在對unsigned short進行提升時不會損失數(shù)據(jù)。】【】里面的第二段話我看不明白,第一段話說自動轉(zhuǎn)換先將變量值轉(zhuǎn)換為int整型,然后再把int轉(zhuǎn)換賦值給short。第二段為什么會說是short被轉(zhuǎn)換給了int?這太跳躍了我完全沒有頭緒
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經(jīng)驗 獲得超6個贊

書上的話好理解,你問的問題有點深奧,聽不明白。我只能把書上的話翻譯一遍。

short fowl=chickens+ducks; 這句話看起來是一個簡單的加法,卻做了幾件事情。一、把2字節(jié)的chickens和ducks分別轉(zhuǎn)換成4字節(jié)的“有符號整數(shù)”,即轉(zhuǎn)換成int(如圖中的兩個movsx指令)。然后做加法(圖中的add指令),最后把加的結(jié)果轉(zhuǎn)換成2字節(jié)后賦給fowl(圖中最后一句mov,此處的(類型)轉(zhuǎn)換就是取寄存器eax的低16位賦給了fowl)。

書上說的提升,一般可以理解為變量所占內(nèi)存的大小有所改變,如2字節(jié)變?yōu)榱?字節(jié)。這時候,編譯器會對這個變量做(有符號或無符號的)擴展。如使用movsx指令,指令中的s即表示有符號之意。相應的,還有零擴展指令movzx,這個可以用于對無符號整數(shù)作擴展。

【】里說明了,當short(所占內(nèi)存空間)的大小比int小時,unsigned short會轉(zhuǎn)換成int;如果相同時,unsigned short將轉(zhuǎn)換成unsigned int?!安粫p失數(shù)據(jù)”指的是變量的所有位在擴展后都保留下來了,沒有丟失任何位。相反地,int轉(zhuǎn)換成short,往往在由大轉(zhuǎn)換成小時丟失位數(shù),因為裝不下了。

我這里所說的大小指的是所占內(nèi)存的多少,即所占字節(jié)的多少,而不是指5>4這種含義的大小。


查看完整回答
反對 回復 2022-05-15
  • 1 回答
  • 0 關(guān)注
  • 210 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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