關於C語言的隱式型別轉換

2021-08-27 17:25:17 字數 680 閱讀 4423

這個問題,本來以為自己早已爛熟於胸了,但是乙個測試程式還是把我給放倒了。

首先給出以下c語言預設的隱式轉換規則:

char,short --> int --> unsigned --> long --> double<--float

ok, 這裡看起來好像也完全沒問題。我們接下來看乙個簡單的小示例:

#include int main()

return 0;

}

執行結果是啥?(先想想,看自己的判斷是不是對的)

// 結果啥也沒輸出

我們稍微改動一行,看看結果如何?

#include int main()

return 0;

}

這次執行結果呢?

carl@ubuntu:~$ ./a.out 

in if

if語句驗證通過。

從上面那個示例來看,我們應該怎麼想呢?

char,short型別,不管是否unsigned char, unsigned short,都會轉換為signed int型別,這是我的想法。

各位朋友,我的理解是否有誤呢?歡迎批評指正

c語言隱式型別轉換

隱式型別轉換分三種,即算術轉換 賦值轉換和輸出轉換。1 算術轉換 進行算術運算 加 減 乘 除 取餘以及符號運算 時,不同型別數招必須轉換成同 一型別的資料才能運算,算術轉換原則為 整型提公升 對於所有比int小的型別,包括char,signed char,unsigned char,short,u...

C語言隱式型別轉換

隱式型別轉換分三種,即算術轉換 賦值轉換和輸出轉換。1 算術轉換 進行算術運算 加 減 乘 除 取餘以及符號運算 時,不同型別數招必須轉換成同 一型別的資料才能運算,算術轉換原則為 整型提公升 對於所有比int小的型別,包括char,signed char,unsigned char,short,u...

關於隱式型別轉換

cat a.cpp include include int main str1 0 0xf0 str1 1 0x00 先整型提公升 再隱式轉換 char int long long num str1 0 8 str1 1 printf ld n num printf x n num 先強制型別轉換 ...