64

いくつかのレガシー コードから次のコードを見ました。

 size_t a = 1 ???- 2 :0;

???-C++ でのシンボルの意味は何ですか? どのように理解すればよいですか?

4

3 に答える 3

107

それは実際には:

size_t a = 1 ? ~2 :0;

??-トリグラフです~


トライグラフは古い時代のものです... 私たちの何人かが生まれる前です.

以前は、常にサポートされていない文字がいくつかありました。知らないプログラマーは、そのような文字を入力しようとして、キーボード上に存在しないことを発見するだけです!

ここに画像の説明を入力
画像ソース: http://www.myoldmac.net/cgi-data/forum/phpBB2/viewtopic.php?t=305

そのため、プログラマーがこれらの文字が存在しない場合 (エンコーディングまたはキーボードから) にこれらの文字の機能にアクセスできるように、トリグラフが追加されました。

今日、それらは時代遅れであり、古い標準を回避するよりも読者を混乱させるのに効果的です.

つまり、そのコードが本当に古いか、作成者が馬鹿げているかのどちらかです。

于 2013-05-21T04:44:31.087 に答える
15

??-チルダ~文字のトライグラフです。この行は次と同等です。

size_t a = 1 ? ~2 :0;
于 2013-05-21T04:45:04.013 に答える
8

??-文字のトライグラフです~。その他のトリグラフは次のとおりです。

 ??= for #

??/ for \

??' for ^

??! for |

現在、トライグラフの使用は非常にまれです。

于 2013-05-21T09:55:09.443 に答える