三字一音、三重音字。
CのソースをISO/IEC 646:1983の不変文字セットの範囲で記述するための悪名高い記法。??に続けて特定の文字を記述することで、ISO/IEC 646にない文字を表現する。
現実問題として、ISO/IEC 646しか使えないレガシーな環境でCソースをコンパイルする機会などほぼ皆無であり(?)、余計な解釈で意図しない文字が現われて混乱のもとになることのほうが多いが、ANSI準拠のためにはtrigraphを解釈できる必要がある。
gccではデフォルト無効。-trigraphsオプションで有効になる。MSCでは常に有効。?を\?とエスケープすることで解釈を抑止する。