C 語言編程 — 數據類型轉換

目錄

前文列表

程序編譯流程與 GCC 編譯器
C 語言編程 — 基本語法
C 語言編程 — 基本數據類型
C 語言編程 — 變量與常量
C 語言編程 — 運算符
C 語言編程 — 邏輯控制語句
C 語言編程 — 函數
C 語言編程 — 高級數據類型 — 指針
C 語言編程 — 高級數據類型 — 數組
C 語言編程 — 高級數據類型 — 枚舉
C 語言編程 — 高級數據類型 — 結構體與位域
C 語言編程 — 高級數據類型 — 共用體
C 語言編程 — 數據類型的別名

數據類型轉換

C 語言中如果一個表達式中含有不同類型的常量和變量,在計算時,會將它們自動轉換爲同一種類型。此外,在 C 語言中也可以對數據類型進行強制轉換。

在編程時,有需要類型轉換的時候都用上強制類型轉換運算符,是一種良好的編程習慣。

隱式(自動)類型轉換

  • 浮點數賦給整型,該浮點數小數被捨去;
  • 整數賦給浮點型,數值不變,但是被存儲到相應的浮點型變量中;
#include <stdio.h>
 
int main(){
   int  i = 17;
   char c = 'c'; /* ascii 值是 99 */
   int sum;
 
   sum = i + c;
   printf("Value of sum : %d\n", sum );
 
}

常用的算術轉換

常用的算術轉換是隱式地把值強制轉換爲相同的類型。編譯器首先執行整數提升(把小於 int/unsigned int 的整數類型自定轉換爲 int/unsigned int 的過程),如果操作數類型不同,則它們會被轉換爲下列層次中出現的最高層次的類型:

在這裏插入圖片描述
注意,常用的算術轉換不適用於賦值運算符以及邏輯運算符。

顯式(強制)類型轉換

強制類型轉換是把變量從一種類型轉換爲另一種數據類型。例如,如果您想存儲一個 long 類型的值到一個簡單整型中,就需要把 long 類型強制轉換爲 int 類型。此時,就可以使用 強制類型轉換運算符(類型標識符)(表達式)

#include <stdio.h>

int main() {
    float f, a, x=3.6, y=5.2;
    int i=4, b;
    a = x + y;
    b = (int)(x + y);
    f = 10 / i;

    printf("a=%d, b=%d, f=%f, x=%f\n", a, b, f, x);
    return 0;
}

運行:

$ ./main
a=8.799999, b=8, f=2.000000, x=3.600000
#include <stdio.h>

int main() {
    int sum = 17, count = 5;
    double mean;

    mean = (double)sum / count;
    // mean = (double)(sum / count);  此時返回 3.000000
    printf("Value of mean: %f", mean);
    return 0;
}

需要注意的是,強制類型轉換運算符的優先級大於除法,因此 sum 的值首先被轉換爲 double 型,然後除以 count,得到一個類型爲 double 的值。注意,如果是 (double)(sum / count) 的話,則會先進行整數運算得到 3 再類型轉換爲雙精度浮點數 3.000000。

運行:

$ ./main
Value of mean: 3.400000
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章