ここでパズルを見てみましょう。以下のようなプログラムがあるとします。出力内容とその理由を伝える必要があります。
#include<iostream> using namespace std; int main() { int x = 0xab; ~x; cout << hex << x; }
それでは、出力は何になるでしょうか? ~x は補数演算を実行しています。では、2 の補数の結果は 16 進数で表示されるのでしょうか?
出力は次のとおりです
ab
したがって、変更はありません。しかし、なぜ?その理由は、~x が x をその補数形式に変換しているにもかかわらず、値がどの変数にも割り当てられていないためです。この式は R 値式です。左辺値は、使用されるまで変数に格納されません。 L 値を入力すると、次のようになります。 -
#include<iostream> using namespace std; int main() { int x = 0xab; x = ~x; cout << hex << x; }
ffffff54
以上がC/C++ R-Value 式に関するパズル?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。