問題タブ [rvalue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 右辺値の定義は値を割り当てることができないオブジェクトですが、なぜリテラルは左辺値なのですか?
そのため、今後のトピックを事前に確認しており、左辺値と右辺値に出くわしましたが、定義が混乱しています。なぜリテラルは左辺値なのですか?
「右辺値は、メモリ内のあるアドレスに格納されているデータ値を指します。右辺値は、値を割り当てることができない式です」
「左辺値の元の定義は、「割り当ての左側に表示できるオブジェクト」と呼ばれていました。ただし、const オブジェクトは左辺値ですが、割り当ての左側に表示することはできません。」
string - 文字列のベクトルを代入ステートメントの右辺値に変換する
文字列のベクトルを変換して代入ステートメントの右辺値にする効率的な方法は考えられません。たとえば、「5」、「*」、「3」の 3 つの要素を持つベクトルがあるので、必要なのは基本的に次の代入ステートメントと同等の代入ステートメントです。
前もって感謝します;
c++ - トークンが右辺値式ではなく括弧で囲まれているのはなぜですか?
次のコードを検討してください。
なぜfoo.bar
1 に評価されるのですか?
の括弧は(foo.bar)
名前のない (右辺値) 式を作成し、それがインクリメントされませんか?
c++ - 右辺値を持つために一時的またはリテラルを持つ必要がありますか?
この質問は、すべての一時的な値が右辺値であるかどうかを尋ねます。
この表現を考えると、答えはノーです。
次に、ここでは右辺値であるまったく同じ一時(2 + 3)
値を、後続の式の左辺値として使用できます。
したがって、この一時的な値は(唯一の)右辺値ではありません。
その場合、論理ステートメントtemporary ==> rvalue
はfalseになります。
ただし、書くことはできません
また
また
したがって、私の質問は、一時的またはリテラルを持たずに、特定の式で右辺値を生成できるかどうかです。rvalue ==> (temporary or literal)
本当ですか?
c++ - const 左辺値参照のアドレスを取得することは合法ですか?
このコードでa
は、右辺値にバインドします。そのアドレスを取ることは合法ですか?(そして、法的には、コードの形式が正しくありませんか?未定義の動作を引き起こしていますか?)
c++ - 右辺値参照とリテラル
コードを検討してください
gcc4.7.2はエラーを出します
リテラルが右辺値として推定されないのはなぜですか?
c++ - 値でポインターを返すと、オブジェクトは移動しません
このコードを vs2011 でコンパイルしました。最初にコンストラクターを出力し、次にコンストラクターをコピーします。しかし、関数をapの代わりにaを返すように変更すると、オブジェクトが移動します。これはバグですか、それともなぜこのように動作するのですか? *ap は右辺値ではありませんか?
c++ - 右辺値を確実にプレインクリメント/デクリメントできますか?
たとえば、std::vector<int>::iterator it = --(myVec.end());
. これは GCC 4.4 で動作しますが、移植性がないという噂を耳にしました。
c++ - ハードコーディングされた文字列定数が左辺値であるのはなぜですか?
移動セマンティクスとは? 次のコード スニペットとコメントが表示されます。
コメント付き:
上記の例では、「hello world」は const char[12] 型の左辺値です。
ハードコーディングされた定数が、const char[12] 型の右辺値"hello world"
ではなく、const char[12] 型の左辺値であるのはなぜですか?
c++ - c++03 と 11 の戻り値
rvalueと lvalueについて数時間を費やしました。これが私が理解していることです
c++03 ではBar1()
、返されたオブジェクトを (return の直前に) コピーし、コピーされたオブジェクトのアドレスを返します。破棄されようとしているオブジェクトの無駄なコピーを実行します。Bar2()
関数内で作成されたオブジェクトを返します。
C++11 ではBar1()
、Bar2()
本質的に同等です (またBar2()
、c++03 と同等です)。
そうですか?そうでない場合は、詳しく説明してください。