首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言數據類型轉換:強制轉換與自動轉換規則詳解

     編輯:C 語言基礎

類型轉換概念與語法

數據類型轉換:將變量、表達式結果從一種類型轉為另一類型。例如為保存小數,將 int 轉為 double。

(type_name) expression

type_name 為目標類型,expression 為表達式。示例:

(float) a;          // a 轉為浮點型
(int)(x + y);       // x+y 結果轉為整型
(float) 100;        // 常量轉為浮點型

強制類型轉換(顯式轉換)

程序員主動使用 ( ) 運算符進行的轉換。

示例:整數轉浮點數計算平均值

#include <stdio.h>
int main() {
    int sum = 17, count = 5;
    double mean;
    mean = (double) sum / count;  // 先轉 sum 再除
    printf("Value of mean : %f\n", mean);
    return 0;
}

輸出:
Value of mean : 3.400000

⚠️ ( ) 優先級高於 /,(double) sum / count 先轉 sum 再除;若寫 (double)(sum / count) 先做整數除法再轉,結果為 3.000000。

自動類型轉換(隱式轉換)

混合類型運算時,編譯器自動按規則轉換:

  1. 不同類型先轉同一類型再運算。
  2. 按數據長度增加方向轉換,保精度不降低(如 int → long)。
  3. 所有浮點運算以雙精度(double)進行,float 先轉 double。
  4. char、short 參與運算必先轉 int。
  5. 賦值運算中,右邊類型轉為左邊變量類型;右邊長度大於左邊時丟失數據、降低精度。

自動轉換演示

#include <stdio.h>
int main() {
    float PI = 3.14159;
    int s1, r = 5;
    double s2;
    s1 = r * r * PI;  // 表達式結果為 double,賦值給 int 截斷小數
    s2 = r * r * PI;  // 保存完整 double 結果
    printf("s1=%d, s2=%f\n", s1, s2);
    return 0;
}

輸出:
s1=78, s2=78.539753

s1 為 int,小數部分直接捨棄(非四捨五入)。

轉換的臨時性

無論強制或自動,轉換僅為本次運算臨時改變數據長度,**不改變** 變量原定義的類型:

#include <stdio.h>
int main() {
    float f = 5.75;
    printf("(int)f=%d, f=%f\n", (int)f, f);
    return 0;
}

輸出:
(int)f=5, f=5.750000

f 本身仍為 float 且值不變。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved