從源代碼中的轉義序列(如 `\n`, `\x41`, `\101`)到編譯後目標文件中的字符常量值,經歷了編譯器詞法分析 → 字符集映射 → 目標平台編碼存儲的完整流程。
| 概念 | 說明 |
|---|---|
| 源字符集 | 源文件保存編碼(如 UTF-8) |
| 執行字符集 | 程序運行環境字符編碼(如 ASCII、EBCDIC、UTF-8) |
| 轉義序列 | 源代碼中表示特殊字符的語法糖 |
| 字符常量值 | 編譯期確定的整數值,等於該字符在執行字符集中的碼位 |
char c = '\x41'; // 源文件 UTF-8 編碼
// 1. 詞法分析:識別 \x41 → 碼點 U+0041
// 2. 執行字符集假設為 ASCII:U+0041 在 ASCII 中編碼為 0x41
// 3. 生成指令:mov byte ptr [c], 0x41
// 4. 運行時:內存中 c = 0x41,printf("%c", c) 輸出 'A'
轉義字符 → 字符常量的轉換,本質是編譯器在編譯期按語言標準將轉義語法映射為執行字符集中的數值編碼。理解「源字符集」與「執行字符集」的區別,是掌握 C 語言字符處理可移植性的關鍵。