程序語句和表達式一般應該只使用一種類型的變量和常量,可是若是混合使用類型,函數
C使用一個規則集合來完成數據類型的自動轉換。原型
如下是一些C數據類型轉換的基本規則:變量
1.當出如今表達式中時,有符號和無符號的char和short類型都將自動轉換爲int。數據類型
2.在包含兩種數據類型的任何運算中,較低級別類型將會轉爲運算中另外一個較高級別的數據類型。float
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.在賦值語句中,計算結果將被轉換爲要被賦值的那個變量的類型,這個過程可能致使級別提高(被賦值的類型級別高)或者降級(被賦值的類型級別低),提高一般是一個平滑無損的過程,然而降級可能致使真正的問題。im
5.做爲函數的參數被傳遞時,char和short會被轉爲int,float轉爲double,但能夠經過函數原型的指定阻止自動提高的發生。數據
參考 : C primer plus集合