web-dev-qa-db-ja.com

C ++コードでの `???-`の意味

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

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

記号は何ですか???- C++の意味ですか?どのように理解すればよいですか?

ありがとうございました!

62
taocp

それは実際には:

size_t a = 1 ? ~2 :0;

??-trigraph for ~


三重音字は古い時代のものです...私たちの何人かが生まれる前ですら。

昔は、常にサポートされているとは限らないキャラクターがいました。知らないプログラマーは、そのような文字を入力しようとして、キーボードに存在しないことを発見するだけです。

enter image description here
画像ソース: http://www.myoldmac.net/cgi-data/forum/phpBB2/viewtopic.php?t=305

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

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

つまり、そのコードは本当に古いか、作者がぎくしゃくしていたかのどちらかです。

103
Mysticial

??-はチルダの三重音字です~ キャラクター;この行は次と同等です。

size_t a = 1 ? ~2 :0;
15
user529758

??-は、~文字の3文字表記です。他のいくつかのトリグラフは次のとおりです。

 ??= for #

??/ for \

??' for ^

??! for |

現在、三重音字の使用は非常にまれです。

8
CodeRider