printf("(Welcome??)"); // 輸出: (Welcome]
原因:C 標準定義 三字母詞,??) 會被預處理器替換為 ](右中括號),歷史原因是為了缺乏特定鍵盤的舊系統。
| 三字母詞 | 替換為 |
|---|---|
| ??= | # |
| ??/ | \ |
| ??' | ^ |
| ??( | [ |
| ??) | ] |
| ??! | | |
| ??< | { |
| ??> | } |
| ??- | ~ |
"(Welcome?\?)" → 輸出 (Welcome??)。"(Welcome\\?\\?)" → 輸出 (Welcome\?\?) (字面反斜線+問號)。-fno-trigraphs (C++17/C23 已移除三字母詞,現代編譯器預設關閉)。避免在字串中出現 ?? 序列。若需輸出問號,習慣寫 \? 或拆分字串。