字元常量基本語法
- 用單引號括起**單一字元**:
'a', 'Z', '9', ' ', '\n'
- 型別為
int(C 標準),值為字元在執行字元集中的編碼(通常是 ASCII/UTF-8 碼點)。
sizeof('a') == sizeof(int)(通常 4),**非** sizeof(char)。
兩種表示法
| 類別 | 語法 | 範例 | 說明 |
| 圖形字元 | '字元' | 'A', '*', '中'(多位元組字元視實作而定) | 直接可讀 |
| 轉義序列 | \ + 字元/數字 | 見下表 | 表示不可列印/特殊控制字元 |
常用轉義序列表
| 序列 | 意義 | ASCII 碼 |
\n | 換行 (LF) | 10 (0x0A) |
\r | 歸位 (CR) | 13 (0x0D) |
\t | 水平定位符 | 9 (0x09) |
\v | 垂直定位符 | 11 (0x0B) |
\b | 退格 | 8 (0x08) |
\f | 換頁 | 12 (0x0C) |
\a | 響鈴 | 7 (0x07) |
\\ | 反斜線 | 92 (0x5C) |
\' | 單引號 | 39 (0x27) |
\" | 雙引號 | 34 (0x22) |
\? | 問號(避免三字元組) | 63 (0x3F) |
\0 | 空字元 (NUL) | 0 (0x00) |
數值轉義:八進制與十六進制
- 八進制:
\ddd(1~3 位八進制數字,最大 \377 = 255)
例:'\101' = 'A' (65 = 0101 八進制)
- 十六進制:
\xhh 或 \xhhhh(1~任意位十六進制數字)
例:'\x41' = 'A' (0x41 = 65)
**等價關係**:'A' == '\101' == '\x41' == 65。
字串常量 vs 字元常量
"A" → 字串常量,型別 const char[2],含結尾 \0,值為**位址**。
'A' → 字元常量,型別 int,值為**編碼數值**。
避坑提醒
- 多字元常量
'ab':標準允許但值**實作定義**,不可移植,**嚴禁使用**。
char c = 'a'; 正確;char c = "a"; 錯誤(指標指向字串字面量)。
printf("%c", 65); 輸出 A;printf("%d", 'A'); 輸出 65。