本例表明了上述賦值運算中類型轉換的規則。a為整型,賦予實型量y值8.88後只取整數8。x為實型,賦予整型量b值322, 後增加了小數部分。字元型量c1賦予a變為整型,整型量b賦予c2 後取其低八位元成為字元型(b的低八位為01000010,即十進位66,按ASCII碼對應於字元B)。
自動轉換遵循以下規則: 1) 若參與運算量的類型不同,則先轉換成同一類型,然後進行運算。 2) 轉換按資料長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。 3) 所有的浮點運算都是以雙精度進行的,即使僅含float單精確度量運算的運算式,也要先轉換成double4) char型和short型參與運算時,必須先轉換成int5) 在賦值運算中,賦值號兩邊量的資料類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊量的資料類型長度左邊長時,將丟失一部分資料,這樣會降低精度,丟失的部分按四捨五入向前舍入。
】
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
|