C語言中型別的自動轉換

2021-04-25 01:33:26 字數 949 閱讀 2015

同一句語句或表示式如果使用了多種型別的變數和常量(型別混用),c 會自動把它們轉換成同一種型別。以下是自動型別轉換的基本規則:

1. 在表示式中,char 和 short 型別的值,無論有符號還是無符號,都會自動轉換成 int 或者 unsigned int(如果 short 的大小和 int 一樣,unsigned short 的表示範圍就大於 int,在這種情況下,unsigned short 被轉換成 unsigned int)。因為它們被轉換成表示範圍更大的型別,故而把這種轉換稱為「公升級(promotion)」。

2. 按照從高到低的順序給各種資料型別分等級,依次為:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和 int。這裡有乙個小小的例外,如果 long 和 int 大小相同,則 unsigned int 的等級應位於 long 之上。char 和 short 並沒有出現於這個等級列表,是因為它們應該已經被公升級成了 int 或者 unsigned int。

3. 在任何涉及兩種資料型別的操作中,它們之間等級較低的型別會被轉換成等級較高的型別。

4. 在賦值語句中,= 右邊的值在賦予 = 左邊的變數之前,首先要將右邊的值的資料型別轉換成左邊變數的型別。也就是說,左邊變數是什麼資料型別,右邊的值就要轉換成什麼資料型別的值。這個過程可 能導致右邊的值的型別公升級,也可能導致其型別降級(demotion)。所謂「降級」,是指等級較高的型別被轉換成等級較低的型別。

5. 作為引數傳遞給函式時,char 和 short 會被轉換成 int,float 會被轉換成 double。使用函式原型可以避免這種自動公升級。

32位機

int                         4        -2^31 ~~(2^31-1)

unsigned int       4        0~~(2^32-1)

c語言中的自動型別轉換

問題 輸入乙個值,若小於110 規定用100的1.1倍表示 輸出yes。最初 include intmian void return0 執行結果 修改後 include intmain void return0 執行結果 問題原因 1.1 b 表示式的值為double型別的110.000000。c語...

C語言中的型別轉換

計算機進行算術運算時,通常要求運算元具有相同的位數 相同的儲存方式。而c語言支援在表示式中混合使用基本資料型別,因此需要在不同的資料型別之間進行轉換。在c語言中存在兩種型別的轉換,一種是隱式轉換,由編譯器自動處理轉換而無需程式開發人員介入,另一種是強制型別轉換 顯式轉換 需要程式開發人員使用強制轉換...

C語言中的型別轉換!

自動轉換發生在不同資料型別運算時,在編譯的時候自動完成 自動轉換遵循的規則就好比小盒子可以放進大盒子裡面一樣,下圖表示了型別自動轉換的規則。縮寫 ascii 英文全稱 american standard code for information interchange 美國資訊交換標準 是一種用於資...