c語言如何進行強制型別轉換

青灯夜游
發布: 2023-01-04 11:04:03
原創
7375 人瀏覽過

在c語言中,可以透過「(type_name) expression」語句來進行強制型別轉換,參數「type_name」表示新型別名稱,例如「(float)100」就是將int型別的數值100轉換為float類型。強制類型轉換是程式設計師明確提出的、需要透過特定格式的程式碼來指明的一種類型轉換;在程式設計時,有需要類型轉換的時候都用強制型別轉換運算符,是一種良好的程式設計習慣。

c語言如何進行強制型別轉換

本教學操作環境: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 );
 
}
登入後複製

c語言如何進行強制型別轉換

這裡要注意的是強制型別轉換運算子的優先權大於除法,因此 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;
}
登入後複製

c語言如何進行強制型別轉換

注意看第6 行程式碼,total 變數被轉換成了int 類型才賦值給total_int 變量,而這個轉換並未影響total 變數本身的型別和值。如果 total 的值改變了,那麼 total 的輸出結果將變成 400.000000;如果 total 的型別變了,那麼 unit 的輸出結果將會變成 80.000000。

擴充知識:常用的算術轉換

#常用的算術轉換是隱式地把值強制轉換成相同的型別。編譯器首先執行整數提升,如果操作數類型不同,則它們會被轉換為下列層次中出現的最高層次的類型:

c語言如何進行強制型別轉換

常用的算術轉換不適用於賦值運算子、邏輯運算子&& 和||。讓我們看看下面的實例來理解這個概念:

#include <stdio.h>
 
int main()
{
   int  i = 17;
   char c = &#39;c&#39;; /* 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語言如何進行強制型別轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板