在 printf("a=%d%%, b=%d%%", a, b); 中連續出現的 %% 並非錯誤,而是 C 語言標準定義的轉義序列,用於輸出字面百分號字符 %。
| 格式串片段 | 輸出結果 | 說明 |
|---|---|---|
%% | % | 轉義輸出單個百分號 |
%d | 整數值 | 格式佔位符,對應後續參數 |
% % (中間有空格) | % % | 兩個獨立字符,非轉義 |
printf 解析格式字符串時,遇到 % 會嘗試匹配後續字符作為格式說明符(如 d、f、s)。若直接書寫 % 會導致解析錯誤或未定義行為。%% 告訴解析器:「這裡只輸出一個百分號,不消耗參數」。
int progress = 85;
printf("Progress: %d%%\n", progress); // 輸出: Progress: 85%
printf("Special: 100%% complete%%\n"); // 輸出: Special: 100% complete%
\\ → 反斜線 \\" → 雙引號 "\n → 換行、\t → 制表符掌握轉義規則,是編寫健壯格式化輸出的基礎。