變量的數據類型是可以轉換的。轉換的方法有兩種,一種是自動轉換,一種是強制轉換。
自動轉換發生在不同數據類型的量混合運算時,由編譯系統自動完成。自動轉換遵循以下規則:
下圖表示了類型自動轉換的規則。
【例3-12】
main(){ float PI=3.14159; int s,r=5; s=r*r*PI; printf("s=%d\n",s); }
本例程序中,PI為實型;s,r為整型。在執行s=r*r*PI語句時,r和PI都轉換成double型計算,結果也為double型。但由於s為整型,故賦值結果仍為整型,捨去了小數部分。
強制類型轉換是通過類型轉換運算來實現的。其一般形式為:
(類型說明符) (表達式)
其功能是把表達式的運算結果強制轉換成類型說明符所表示的類型。
例如:
(float) a; /* 把a轉換為實型 */ (int)(x+y); /* 把x+y的結果轉換為整型 */
在使用強制轉換時應注意以下問題:
【例3-13】
main(){ float f=5.75; printf("(int)f=%d,f=%f\n",(int)f,f); }
本例表明,f雖強制轉為int型,但只在運算中起作用,是臨時的,而f本身的類型並不改變。因此,(int)f的值為 5(刪去了小數)而f的值仍為5.75。