c語言資料型別轉換的方法
#資料型別轉換就是要將資料(變數、數值、表達式的結果等)從一種類型轉換為另一種類型。
自動型別轉換
自動型別轉換就是編譯器默默地、隱含、偷偷地進行的資料型別轉換,這種轉換不需要程式設計師幹預,會自動發生。
1) 將一種類型的資料賦值給另外一種類型的變數時就會發生自動型別轉換,例如:
float f = 100;
100 是int 類型的數據,需要先轉換為float 類型才能賦值給變數f。再如:
int n = f;
f 是 float 類型的數據,需要先轉換為 int 型別才能賦值給變數 n。
在賦值運算中,賦值號兩邊的資料類型不同時,需要把右邊表達式的類型轉換為左邊變數的類型,這可能會導致資料失真,或者精確度降低;所以說,自動類型轉換不一定是安全的。對於不安全的型別轉換,編譯器一般會給予警告。
2) 在不同類型的混合運算中,編譯器也會自動轉換資料類型,將參與運算的所有資料先轉換為同一種類型,然後再進行計算。轉換的規則如下:
轉換依資料長度增加的方向進行,以確保數值不會失真,或精確度不會降低。例如,int 和 long 參與運算時,先把 int 類型的資料轉成 long 類型後再進行運算。
所有的浮點運算都是以雙精確度進行的,即使運算中只有 float 類型,也要先轉換為 double 類型,才能進行運算。
char 和 short 參與運算時,必須先轉換成 int 型別。
下圖對此轉換規則進行了更形象化描述:
unsigned 也即 unsigned int,此時可以省略 int,只寫 unsigned。
自動類型轉換範例:
#include<stdio.h> int main(){ float PI = 3.14159; int s1, r = 5; double s2; s1 = r * r * PI; s2 = r * r * PI; printf("s1=%d, s2=%f\n", s1, s2); return 0; }
運行結果:
s1=78, s2=78.539749
在計算表達式r*r*PI時,r 和PI 都會轉換成double 類型,並表達式的結果也是double 型。但由於 s1 為整數,所以賦值運算的結果仍為整數,捨去了小數部分,導致資料失真。
更多程式相關內容,請關注php中文網程式入門欄位!
以上是c語言資料型別轉換的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!