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

C語言格式化輸出詳解:%c、%d、字元與整數雙向轉換

     編輯:C 語言問答

題目代碼修正與分析

原代碼有語法錯誤(反引號、格式字串逗號),修正版:

#include <stdio.h>

int main() {
    char c = 'a';   // 字元字面常數用單引號
    int i = 65;     // 整數 65
    
    // 格式字串用雙引號,參數用逗號分隔
    printf("%c.%d.%c,%d\n", c, c, i, i);
    return 0;
}

執行結果

a.97.A,65

詳細解析

格式指定符對應引數輸出值說明
%cc ('a')a以字元形式輸出,ASCII 97 顯示為 'a'
%dc ('a')97以有號十進位整數輸出,字元自動提升為 int,值為 ASCII 碼 97
%ci (65)A以字元形式輸出,65 對應 ASCII 大寫 'A'
%di (65)65以整數輸出,值不變

核心知識點

1. 字元在 C 語言中本質是整數

  • char 佔 1 位元組,儲存 ASCII 碼(0-127)或擴展 ASCII(0-255)。
  • 'a' 即為整數常數 97,'A' 為 65,'0' 為 48。
  • 字元參與運算時自動提升為 int(整數提升)。

2. printf 格式指定符決定解讀方式

  • %c:將對應引數視為 unsigned char,輸出該字元。
  • %d / %i:將對應引數視為 int,輸出有號十進位。
  • 同一變數,不同格式符,輸出完全不同——這是類型不安全的體現,需程式設計師自行保證匹配。

3. ASCII 碼對照表(關鍵範圍)

字元十進位十六進位備註
'0' - '9'48 - 570x30 - 0x39連續,'5' - '0' == 5
'A' - 'Z'65 - 900x41 - 0x5A大寫字母
'a' - 'z'97 - 1220x61 - 0x7A小寫字母,'a' - 'A' == 32
' ' (空格)320x20
\n (換行)100x0A
\0 (空字元)00x00字串結束標記

4. 實用技巧:字元與數字互轉

// 字元轉對應數字
int digit = ch - '0';  // '5' -> 5

// 數字轉字元
char ch = digit + '0'; // 5 -> '5'

// 大小寫轉換 (ASCII 專用)
char lower = upper + 32;  // 'A' -> 'a'
char upper = lower - 32;  // 'a' -> 'A'
// 標準庫更安全:
#include <ctype.h>
char lower = tolower(upper);
char upper = toupper(lower);

常見錯誤對照

錯誤代碼問題修正
char c = `a`;反引號非字元字面常數char c = 'a';
printf("%c.%d.%c,%d\n".c.c.i.i);格式字串用點號、參數用點號printf("%c.%d.%c,%d\n", c, c, i, i);
printf("%c", 97); 輸出 'a'正確,但可讀性差建議 printf("%c", 'a');
char c = 97; printf("%d", c);輸出 97,正確若要輸出字元用 %c

延伸:scanf 讀取字元與整數

char ch;
int num;
scanf(" %c", &ch);  // 前面空格跳過空白字元(含換行)
scanf("%d", &num);  // 讀取整數
// 注意:%c 不跳過空白,需在格式字串前加空格

總結

%c 與 %d 是 C 語言格式化輸出最基礎的指定符,分別對應「字元視圖」與「整數視圖」。理解 字元本質是整數(ASCII 碼)、格式符決定解讀方式,是掌握 C 輸入輸出的關鍵。

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