いくつかの文字のトライグラフシーケンスを使用して、次のようなansiCの他の文字になるのは元々の理由でした。
??=define arraycheck(a, b) a??(b??) ??!??! b??(a??)
になります
#define arraycheck(a, b) a[b] || b[a]
簡単な答え:そのようなグラフを含まないキーボード/文字エンコード。
ウィキペディアから:
Cプログラミング言語の基本文字セットは、ISO646不変文字セットの外側にある9文字を含むASCII文字セットのスーパーセットです。これは、使用されているキーボードがこれらの9文字のいずれもサポートしていない場合に、ソースコードの記述に問題を引き起こす可能性があります。ANSI C委員会は、ISO646文字セットの任意のバージョンをサポートするキーボードを使用してソースコードを入力する方法としてトリグラフを発明しました。
一部の古いキーボードには特定の文字が含まれていなかったため、言語は代わりに三重音字を使用できるようにすることでそれを回避しました。