在c語言中,可以透過「(type_name) expression」語句來進行強制型別轉換,參數「type_name」表示新型別名稱,例如「(float)100」就是將int型別的數值100轉換為float類型。強制類型轉換是程式設計師明確提出的、需要透過特定格式的程式碼來指明的一種類型轉換;在程式設計時,有需要類型轉換的時候都用強制型別轉換運算符,是一種良好的程式設計習慣。
本教學操作環境:windows7系統、c99版本、Dell G3電腦。
資料型別轉換就是將資料(變數、數值、表達式的結果等)從一種型別轉換成另一種型別。
c語言有兩種資料型別方式:
自動型別轉換:就是編譯器默默地、隱式地、偷偷地進行的資料型別轉換,這種轉換不需要程式設計師幹預,會自動發生。
強制型別轉換
下面我們就詳細了解c語言的強制型別轉換。
強制類型轉換
自動類型轉換是編譯器根據程式碼的上下文環境自行判斷的結果,有時並不是那麼「智能”,不能滿足所有的需求。如果需要,程式設計師也可以自己在程式碼中明確地提出要進行型別轉換,稱為強制型別轉換。
自動型別轉換是編譯器默默地、隱式地進行的一種型別轉換,不需要在程式碼中體現;強制型別轉換是程式設計師明確提出的、需要透過特定格式的程式碼來指明的一種類型轉換。換句話說,自動類型轉換不需要程式設計師幹預,強制類型轉換必須有程式設計師幹預。
強制型別轉換的格式為:
(type_name) expression
type_name
為新型別名稱
##expression為表達式
(float) a; //将变量 a 转换为 float 类型 (int)(x+y); //把表达式 x+y 的结果转换为 int 整型 (float) 100; //将数值 100(默认为int类型)转换为 float 类型
#include <stdio.h> int main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean ); }
型別轉換只是臨時性的
無論是自動型別轉換還是強制型別轉換,都只是為了本次運算而進行的臨時性轉換,轉換的結果也會儲存到暫時的記憶體空間,不會改變資料本來的型別或值。請看下面的範例:#include <stdio.h> int main(){ double total = 400.8; //总价 int count = 5; //数目 double unit; //单价 int total_int = (int)total; unit = total / count; printf("total=%lf, total_int=%d, unit=%lf\n", total, total_int, unit); return 0; }
擴充知識:常用的算術轉換
#常用的算術轉換是隱式地把值強制轉換成相同的型別。編譯器首先執行整數提升,如果操作數類型不同,則它們會被轉換為下列層次中出現的最高層次的類型:常用的算術轉換不適用於賦值運算子、邏輯運算子&& 和||。讓我們看看下面的實例來理解這個概念:#include <stdio.h> int main() { int i = 17; char c = 'c'; /* ascii 值是 99 */ float sum; sum = i + c; printf("Value of sum : %f\n", sum ); }
Value of sum : 116.000000
以上是c語言如何進行強制型別轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!