數據類型轉換:將變量、表達式結果從一種類型轉為另一類型。例如為保存小數,將 int 轉為 double。
(type_name) expression
type_name 為目標類型,expression 為表達式。示例:
(float) a; // a 轉為浮點型 (int)(x + y); // x+y 結果轉為整型 (float) 100; // 常量轉為浮點型
程序員主動使用 ( ) 運算符進行的轉換。
#include <stdio.h>
int main() {
int sum = 17, count = 5;
double mean;
mean = (double) sum / count; // 先轉 sum 再除
printf("Value of mean : %f\n", mean);
return 0;
}
輸出:
Value of mean : 3.400000
⚠️ ( ) 優先級高於 /,(double) sum / count 先轉 sum 再除;若寫 (double)(sum / count) 先做整數除法再轉,結果為 3.000000。
混合類型運算時,編譯器自動按規則轉換:
int → long)。double)進行,float 先轉 double。char、short 參與運算必先轉 int。#include <stdio.h>
int main() {
float PI = 3.14159;
int s1, r = 5;
double s2;
s1 = r * r * PI; // 表達式結果為 double,賦值給 int 截斷小數
s2 = r * r * PI; // 保存完整 double 結果
printf("s1=%d, s2=%f\n", s1, s2);
return 0;
}
輸出:
s1=78, s2=78.539753
s1 為 int,小數部分直接捨棄(非四捨五入)。
無論強制或自動,轉換僅為本次運算臨時改變數據長度,**不改變** 變量原定義的類型:
#include <stdio.h>
int main() {
float f = 5.75;
printf("(int)f=%d, f=%f\n", (int)f, f);
return 0;
}
輸出:
(int)f=5, f=5.750000
f 本身仍為 float 且值不變。