| 轉義序列 | 含義 | ASCII 碼 | 常見用途 |
|---|---|---|---|
\n | 換行 (LF) | 10 (0x0A) | 文本行分隔 |
\r | 回車 (CR) | 13 (0x0D) | Windows 換行 \r\n、進度條覆蓋 |
\b | 退格 (BS) | 8 (0x08) | 刪除前一字符、動畫效果 |
\f | 換頁 (FF) | 12 (0x0C) | 打印機分頁 |
\t | 水平製表 (HT) | 9 (0x09) | 對齊輸出、分隔字段 |
\v | 垂直製表 (VT) | 11 (0x0B) | 極少用 |
\a | 響鈴 (BEL) | 7 (0x07) | 終端蜂鳴 |
\" | 雙引號 | 34 (0x22) | 字符串內包含引號 |
\' | 單引號 | 39 (0x27) | 字符常量內包含單引號 |
\\ | 反斜槓 | 92 (0x5C) | 路徑、正則表達式 |
\? | 問號 | 63 (0x3F) | 避免三字母組歧義 |
\ 後跟 1~3 位八進制數字,如 \101 (= 'A')、\07 (= \a)。\x 後跟 1 位或多位十六進制數字,如 \x41 (= 'A')、\x1B (= ESC)。無位數上限,遇非十六進制字符停止。
printf("\x41"); // 輸出 A
printf("\102"); // 輸出 B (八進制 102 = 十進制 66)
printf("\x1B[2J"); // ANSI 清屏序列 (ESC [ 2 J)
printf("\"C++Builder\" 2009\n"); // 輸出: "C++Builder" 2009
char *path = "C:\\Windows\\Temp";
printf("%s", path); // 輸出: C:\Windows\Temp
單反斜槓是轉義引導符,寫路徑必須雙寫 \\ 表示字面反斜槓。
for (int i = 0; i <= 100; i++) {
printf("\rProgress: %d%%", i);
fflush(stdout);
usleep(50000);
}
printf("\n");
\r 回行首覆蓋上一次輸出,實現單行刷新效果。
"Hello" "World" // 編譯期自動連接為 "HelloWorld"
"Line1\n" "Line2\n" // 多行字符串分行書寫
L'\x41'、L"中文":wchar_t 寬字符/字符串。u8"中文":UTF-8 字符串字面量(類型 char[])。u'\u4E2D'、U'\U00004E2D':Unicode 碼點直接表示(C11)。\123 是一個字符(八進制 123),非 \12 + '3'。若後接數字字符需用十六進制 \x53 或拆分字符串 \"\\12\" \"3\"。\x123 視為一個字符(0x123),若想表達 0x12 + '3',需寫 \x12"3"。'\n' 類型 int,"\n" 類型 char[2]。sizeof('\n') == sizeof(int) (通常 4),sizeof("\n") == 2。R"(C:\Windows\Temp)" 無需轉義,C23 引入 R"(...)" 語法。轉義字符是 C 語言在字符/字符串中表示不可打印控制字符、特殊標點、任意數值字符的核心機制。熟練掌握 \n/\r/\t/\\/\" 等常用轉義、八/十六進制數值表示、路徑雙反斜槓規範,並注意八/十六進制位數貪婪匹配陷阱,是編寫正確字符串處理代碼的基礎。