您現(xiàn)在的位置:首頁 > 綜合 > 特別關(guān)注 > 正文

【C語言】關(guān)于整型提升、截斷、打印數(shù)據(jù)的結(jié)果

時間:2023-04-16 14:14:12    來源:騰訊云    

一:先介紹一下相關(guān)概念

1.整型提升:

(1)應(yīng)用場景數(shù)字有整數(shù)和小數(shù),對應(yīng)c語言中的整型和浮點型,由此可見當(dāng)整數(shù)發(fā)生運算時,那其實就意味著整形運算,我們還知道如果小于整形的類型發(fā)生整型運算時,那就要進行整型提升


【資料圖】

(2)應(yīng)用場景整數(shù)的打印形式有多種,常見的%d和%u分別是以有符號的十進制形式和無符號的十進制形式來打印整數(shù)

(3)整型提升的規(guī)則無符號數(shù)在進行整型提升時高位補0,有符號數(shù)分為正數(shù)和負數(shù),正數(shù)高位補0,負數(shù)高位補1,換句話說就是,有符號數(shù)高位補符號位即可

明白什么時候整型提升后,我們再來講解發(fā)生截斷

2.發(fā)生截斷:

其實就是一個整形數(shù)據(jù)存儲到小于整型的類型時,由于存放字節(jié)數(shù)有限,只能存放這個整型數(shù)據(jù)的一部分,這其實就是發(fā)生了截斷

像上面的這種賦值方式就是要發(fā)生截斷了

二:話不多說,直接上手操作一下就會了

200是一個整型數(shù)字,(32位下,方便表示)二進制表示形式為00000000000000000000000011001000截斷后存到a中的是11001000、

100也是一個整型數(shù)字,(32位下,方便表示)二進制表示形式為00000000000000000000000001100100截斷后存到a中的是01100100

a+b就是兩個整數(shù)運算,那就是整形運算,要發(fā)生整型提升后,再進行相加,相加后的結(jié)果為00000000000000000000000100101100

存儲到c時,由于c是char型,又要發(fā)生截斷,截斷后存儲到c中的結(jié)果為00101100

最后打印a+b和c,由于%d是以有符號的十進制的形式打印整數(shù),因為a+b本身就是32比特位了,所以不需要整型提升。但是c是8比特位,所以要進行整型提升,c的高位是0,那他就是有符號數(shù)里面的正數(shù),按照相應(yīng)的提升規(guī)則,高位全補符號位0

最后,提升完后,要進行打印,由于我們看到的是原碼內(nèi)容,儲存在機器里的是補碼內(nèi)容,所以我們還要進行轉(zhuǎn)碼操作,又因為a+b和c都是正數(shù),所以原碼反碼補碼均相同,直接用計算器轉(zhuǎn)換到十進制數(shù)字即可得出答案

三:最后的最后

小編只是個剛上大一的學(xué)生,寫篇博客真的很不容易,嗚嗚嗚

大家多多支持哈,小編在此感激不盡,嘻嘻嘻

關(guān)鍵詞:

上一篇:
下一篇:

凡本網(wǎng)注明“XXX(非中國微山網(wǎng))提供”的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和其真實性負責(zé)。

特別關(guān)注