そのため、次のようなコードを記述する必要があります。
x = (y + 1) % 10; x = (y + 1) * (z - 1); x = (double)(f(y) + 1);
演算子+と-の優先順位は非常に低いため、常に括弧で囲む必要があります。これにより、コードの埋め込みが深くなり、理解が困難になります。
Visual Studio 2015 RCでは、オタマジャクシステートメントと呼ばれる実験的なステートメントがいくつか追加されています。 括弧に頼らずにユニットを追加および削除できます。
x = -~y % 10; x = -~y * ~-z; x = (double)-~f(y);
それらは、意味に出入りするオタマジャクシに似ているため、そのように命名されています。 ティルダは頭で、マイナスは尾です。
構文 | 価値 | ニーモニック |
---|
-〜y | y + 1 | オタマジャクシは値に合わせて浮き上がり、大きくなります |
〜-y | y-1 | おたまじゃくしは価値に浮かび、小さくする |
オタマジャクシ演算子の実験的サポートを有効にするには、C ++ファイルの先頭に追加します。
#define __ENABLE_EXPERIMENTAL_TADPOLE_OPERATORS
オタマジャクシ演算子の使用方法を示す簡単なプログラムを次に示します。
#define __ENABLE_EXPERIMENTAL_TADPOLE_OPERATORS #include <ios> #include <iostream> #include <istream> int __cdecl main(int, char**) { int n = 3; std::cout << "3 + 1 = " << -~n << std::endl; std::cout << "(3 - 1) * (3 + 1) " << ~-n * -~n << std::endl; return 0; }
これらの演算子はまだ実験的であることに注意してください。 それらはC ++の公式な部分ではありませんが、それらを試して、
ここにコメントを残すことができ
ます 。
翻訳者からそれにもかかわらず、私は記事で直接起こっていることの説明を追加することにしました。
追加のコードで数値を表す場合、算術演算とビット演算の関係が実行されます。
-x = ~x + 1;
そこから論理的に判明:
-~x = ~(~x) + 1 = x + 1; ~-x = (~-x + 1) - 1 = -(-x) - 1 = x - 1;
つまり、C ++には新しいオタマジャクシ演算子は導入されていません。これは単にRaymond Chenからの冗談です。
C ++のその他の非自明な操作は、
このページで表示でき
ます 。