程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言數據類型轉換教程

C語言數據類型轉換教程

編輯:關於C語言
 

變量的數據類型是可以轉換的。轉換的方法有兩種,一種是自動轉換,一種是強制轉換。

自動轉換

自動轉換發生在不同數據類型的量混合運算時,由編譯系統自動完成。自動轉換遵循以下規則:

  1. 若參與運算量的類型不同,則先轉換成同一類型,然後進行運算。
  2. 轉換按數據長度增加的方向進行,以保證精度不降低。如int型和long型運算時,先把int量轉成long型後再進行運算。
  3. 所有的浮點運算都是以雙精度進行的,即使僅含float單精度量運算的表達式,也要先轉換成double型,再作運算。
  4. char型和short型參與運算時,必須先轉換成int型。
  5. 在賦值運算中,賦值號兩邊量的數據類型不同時,賦值號右邊量的類型將轉換為左邊量的類型。如果右邊量的數據類型長度左邊長時,將丟失一部分數據,這樣會降低精度,丟失的部分按四捨五入向前捨入。


下圖表示了類型自動轉換的規則。


【例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的結果轉換為整型 */


在使用強制轉換時應注意以下問題:

  • 類型說明符和表達式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫成(int)x+y則成了把x轉換成int型之後再與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。
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved