Trigraphs
來源的字元組 c 原始程式的程式放在 7 位元 ASCII 字元集,但是是 /m 的 ISO 646-1983年恆定性的程式碼組。 三併詞順序可讓 c 程式寫入使用只 ISO (國際標準組織) 而異的程式碼組。 Trigraphs 是 (由兩個連續的問號引入) 的三個字元序列,編譯器會取代其相對應的標點符號字元。 您可以使用 trigraphs 在 c 原始程式檔不包含某些標點符號,方便的圖形表示的字元集。
下表顯示了九種三併詞序列。 在原始程式檔中的標點符號字元的第一欄中的所有項目是以第二欄中對應的字元所取代。
三併詞順序
三併詞 |
標點符號字元 |
---|---|
??= |
# |
??( |
[ |
??/ |
\ |
??) |
] |
??' |
^ |
??< |
{ |
??! |
| |
??> |
} |
??- |
~ |
三併詞一定會被視為單一來源的字元。 Trigraphs 的轉譯發生第一次轉譯階段、 的逸出字元辨識字串常值前後的字元常數。 識別只九個 trigraphs 上表所示。 未轉譯的所有序列中還有其他字元。
字元的逸出序列, \?,可避免錯誤解譯類似三併詞的字元順序。 (逸出序列的相關資訊,請參閱逸出序列。) 例如,如果您試圖列印字串What??!的printf陳述式
printf( "What??!\n" );
列印的字串是What|因為??!是會被取代的三併詞順序 |字元。 撰寫,如下所示來正確地列印字串的陳述式:
printf( "What?\?!\n" );
在此printf陳述式中,第二個問號的前面的反斜線逸出字元可以避免錯誤解譯??!為三併詞。