首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C/C++ 中字符 'A' 參與整數運算的規則:為什麼 int a = 7 + 5.6 + 'A' 結果是 77?

     編輯:程式設計綜合問答

問題代碼

int a = (int)(7 + 5.6 + 'A');
// 結果 a = 77

計算過程詳解

  1. 字符 'A' 的 ASCII 碼值為 65(十進制)。
  2. 表達式中出現 `double` 型別(5.6),觸發隱式類型提升:`7` 變為 `7.0`,`'A'` 變為 `65.0`。
  3. 浮點運算:`7.0 + 5.6 + 65.0 = 77.6`。
  4. 強制轉換為 `int`:截取整數部分,即 `77`(非四捨五入)。

關鍵知識點

  • 字符常量(如 `'A'`)在整數上下文中自動轉為其 ASCII 碼值(`int` 型別)。
  • 混合類型運算遵循「高精度優先」原則:`int` → `double` → `float` 等。
  • 浮點數轉 `int` 直接截斷小數部分(向零取整),而非四捨五入。

驗證代碼

#include <stdio.h>
int main() {
    printf("'A' = %d\n", 'A');           // 65
    printf("7 + 5.6 + 'A' = %f\n", 7 + 5.6 + 'A'); // 77.600000
    int a = (int)(7 + 5.6 + 'A');
    printf("a = %d\n", a);               // 77
    return 0;
}

理解字符參與運算的本質,有助於避免隱式轉換帶來的邏輯錯誤。

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