在c語言中,可以通過「(type_name) expression」語句來進行強制型別轉換,引數「type_name」表示新型別名稱,例如「(float)100」就是將int型別的數值100轉換為float型別。強制型別轉換是程式設計師明確提出的、需要通過特定格式的程式碼來指明的一種型別轉換;在程式設計時,有需要型別轉換的時候都用上強制型別轉換運運算元,是一種良好的程式設計習慣。
本教學操作環境:windows7系統、c99版本、Dell G3電腦。
資料型別轉換就是將資料(變數、數值、表示式的結果等)從一種型別轉換為另一種型別。
c語言有兩種資料型別方式:
自動型別轉換:就是編譯器默默地、隱式地、偷偷地進行的資料型別轉換,這種轉換不需要程式設計師干預,會自動發生。
強制型別轉換
下面我們就詳細瞭解一下c語言的強制型別轉換。
強制型別轉換
自動型別轉換是編譯器根據程式碼的上下文環境自行判斷的結果,有時候並不是那麼「智慧」,不能滿足所有的需求。如果需要,程式設計師也可以自己在程式碼中明確地提出要進行型別轉換,這稱為強制型別轉換。
自動型別轉換是編譯器默默地、隱式地進行的一種型別轉換,不需要在程式碼中體現出來;強制型別轉換是程式設計師明確提出的、需要通過特定格式的程式碼來指明的一種型別轉換。換句話說,自動型別轉換不需要程式設計師干預,強制型別轉換必須有程式設計師干預。
強制型別轉換的格式為:
(type_name) expression
登入後複製
type_name
為新型別名稱
expression
為表示式
例如:
(float) a; //將變數 a 轉換為 float 型別
(int)(x+y); //把表示式 x+y 的結果轉換為 int 整型
(float) 100; //將數值 100(預設為int型別)轉換為 float 型別
登入後複製
請看下面的範例,使用強制型別轉換運運算元把一個整數變數除以另一個整數變數,得到一個浮點數:
#include <stdio.h>
int main()
{
int sum = 17, count = 5;
double mean;
mean = (double) sum / count;
printf("Value of mean : %f\n", mean );
}
登入後複製
這裡要注意的是強制型別轉換運運算元的優先順序大於除法,因此 sum 的值首先被轉換為 double 型,然後除以 count,得到一個型別為 double 的值。
型別轉換可以是隱式的,由編譯器自動執行,也可以是顯式的,通過使用強制型別轉換運運算元來指定。在程式設計時,有需要型別轉換的時候都用上強制型別轉換運運算元,是一種良好的程式設計習慣。
型別轉換只是臨時性的
無論是自動型別轉換還是強制型別轉換,都只是為了本次運算而進行的臨時性轉換,轉換的結果也會儲存到臨時的記憶體空間,不會改變資料本來的型別或者值。請看下面的例子:
#include <stdio.h>
int main(){
double total = 400.8; //總價
int count = 5; //數目
double unit; //單價
int total_int = (int)total;
unit = total / count;
printf("total=%lf, total_int=%d, unit=%lf\n", total, total_int, unit);
return 0;
}
登入後複製
注意看第 6 行程式碼,total 變數被轉換成了 int 型別才賦值給 total_int 變數,而這種轉換並未影響 total 變數本身的型別和值。如果 total 的值變了,那麼 total 的輸出結果將變為 400.000000;如果 total 的型別變了,那麼 unit 的輸出結果將變為 80.000000。
擴充套件知識:常用的算術轉換
常用的算術轉換是隱式地把值強制轉換為相同的型別。編譯器首先執行整數提升,如果運算元型別不同,則它們會被轉換為下列層次中出現的最高層次的型別:
常用的算術轉換不適用於賦值運運算元、邏輯運運算元 && 和 ||。讓我們看看下面的範例來理解這個概念:
#include <stdio.h>
int main()
{
int i = 17;
char c = 'c'; /* ascii 值是 99 */
float sum;
sum = i + c;
printf("Value of sum : %f\n", sum );
}
登入後複製
當上面的程式碼被編譯和執行時,它會產生下列結果:
Value of sum : 116.000000
登入後複製
在這裡,c 首先被轉換為整數,但是由於最後的值是 float 型的,所以會應用常用的算術轉換,編譯器會把 i 和 c 轉換為浮點型,並把它們相加得到一個浮點數。
【相關推薦:C語言視訊教學、】
以上就是c語言如何進行強制型別轉換的詳細內容,更多請關注TW511.COM其它相關文章!