C語言資料型別轉換
阿新 • • 發佈:2020-09-21
在嵌入式開發中,常常涉及到資料型別的轉換。經過比較,將幾種經典案例總結如下。歡迎大家交流。
1、int 與 float 的轉換
1 int a = 3; 2 int b = 4; 3 float c; 4 c = a/b;
上面程式碼執行結果為0.000000
int a = 3; int b = 4; float c; c = (float)a/b;
上面程式碼執行結果為0.750000
1 int a = 3; 2 int b = 4; 3 float c; 4 c = (float)(a/b);
上面程式碼運算結果為0.000000
1 int a = 3; 2 int b = 4; 3 float c; 4 c = a/(float)b;
上面程式碼運算結果為0.750000
第一段程式碼,a為int型別,b為int型別,int型別的除法只保留整數。然後等式右邊的資料型別向等式左邊的資料型別隱式轉換。
第二段程式碼,將a轉為float型別,然後在與b相除。b是int型別,a是float型別。b向a的型別轉換。則全部為float型別。故計算結果為浮點型。
第三段程式碼,使用括號將a/b先運算,由於是整數的除法,所以運算結果為0,又因為等號右邊自動向等號左邊資料型別轉化,最終為0.000000。
第四段程式碼,將b轉為float型別,然後在被a除,int除以float,低型別自動向高型別轉換。a/b變為float型別除法。故計算結果為0.000000。
總結:等號右邊的資料型別會自動向等號左邊的資料型別轉換
算式中,若存在資料型別不同的資料,低等級的資料型別自動向高等級的資料型別轉換。
2、float向int型別轉換