1、隱式轉換
C在以下四種情況下會進行隱式轉換:
1、算術運算式中,低類型能夠轉換為高類型。
2、賦值運算式中,右邊運算式的值自動隱式轉換為左邊變數的類型,並賦值給他。
3、函數調用中參數傳遞時,系統隱式地將實參轉換為形參的類型後,賦給形參。
4、函數有傳回值時,系統將隱式地將返回運算式類型轉換為傳回值類型,賦值給調用函數。
2、算數運算的隱式轉換
算數運算中,首先有如下類型轉換規則:
1、字元必須先轉換為整數(C語言規定字元類型資料和整型資料之間可以通用) 。
2、short型轉換為int型(同屬於整型) 。
3、float型資料在運算時一律轉換為雙精確度(double)型,以提高運算精度(同屬於實型) 。
其次,有下面的規則。
當不同類型的資料進行操作時,應當首先將其轉換成相同的資料類型,然後進行操作,轉換規則是由低級向進階轉換。轉換規則如所示:
的簡化圖如下所示:
3、算數運算樣本
執行:x = 100 + 'a' + 1.5 * u + f / 'b' - s * 3.1415926
其中,u為unsigned型,f為float型,s為short型,x為float型。式中右面運算式按如下步驟處理:
1、首先將'a'、'b'和s換成int,將1.5和f轉換為double型。
2、計算100+'a',因'a'已轉換為int型,於是此運算結果為197。
3、計算1.5*u,由於1.5已轉換為double,u是unsigned型,於是首先u轉換為double,然後進行運算,運算結果為double。
4、計算197+1.5 * u,先將197轉換為double(如197.00…00),其結果為double。
5、計算f/ 'b',f已轉換為double,'b'已轉換為int,於是先將'b'再轉換為double,其結果為double。
6、計算(197+1.5 * u)+f / 'b',者均為double,於是結果也為double。
7、計算s * 3.1415926,先將s由int轉換為double,然後進行運算,其結果為double。
8、最後與前面得的結果相減,結果為double。
9、最後將運算式的結果轉換為float並賦給x。