いくつかのレガシー コードから次のコードを見ました。
size_t a = 1 ???- 2 :0;
???-
C++ でのシンボルの意味は何ですか? どのように理解すればよいですか?
それは実際には:
size_t a = 1 ? ~2 :0;
??-
のトリグラフです~
トライグラフは古い時代のものです... 私たちの何人かが生まれる前です.
以前は、常にサポートされていない文字がいくつかありました。知らないプログラマーは、そのような文字を入力しようとして、キーボード上に存在しないことを発見するだけです!
画像ソース: http://www.myoldmac.net/cgi-data/forum/phpBB2/viewtopic.php?t=305
そのため、プログラマーがこれらの文字が存在しない場合 (エンコーディングまたはキーボードから) にこれらの文字の機能にアクセスできるように、トリグラフが追加されました。
今日、それらは時代遅れであり、古い標準を回避するよりも読者を混乱させるのに効果的です.
つまり、そのコードが本当に古いか、作成者が馬鹿げているかのどちらかです。
??-
チルダ~
文字のトライグラフです。この行は次と同等です。
size_t a = 1 ? ~2 :0;
??-
文字のトライグラフです~
。その他のトリグラフは次のとおりです。
??= for #
??/ for \
??' for ^
??! for |
現在、トライグラフの使用は非常にまれです。