程序語句和表達式通常應該只使用一種類型的變量和常量,但是如果混合使用類型,C使用一個規則集合來完成數據類型的自動轉換。
以下是一些C數據類型轉換的基本規則:
1.當出現在表達式中時,有符號和無符號的char和short類型都將自動轉換為int。
2.在包含兩種數據類型的任何運算中,較低級別類型將會轉為運算中另一個較高級別的數據類型。
3.數據類型級別從高到低的順序是long double、double、float、usigned long long、long long unsigned long、long、 unsigned int、int一個可能的例外是當long和int具有相同大小時,unsigned int級別高於long,short和char由規則1被提升到int。
4.在賦值語句中,計算結果將被轉換為要被賦值的那個變量的類型,這個過程可能導致級別提升(被賦值的類型級別高)或者降級(被賦值的類型級別低),提升通常是一個平滑無損的過程,然而降級可能導致真正的問題。
5.作為函數的參數被傳遞時,char和short會被轉為int,float轉為double,但可以通過函數原型的指定阻止自動提升的發生。
參考 : C Primer Plus(第五版)中文版[PDF+源代碼]下載 http://www.linuxidc.com/Linux/2012-05/60075.htm