いつC++プログラムをコンパイルするときに "l-value required"エラーが発生するか(VC++を使用しています)"l-value required"エラー
答えて
アン「左辺値」を取得するには、割り当ての対象となり得る値です。 "l"は等号の左側にある "left"を表します。右辺値は右辺値であり、値を生成し、直接割り当てることはできません。 "左辺値が必要"になっている場合、左辺値が必要なときに右辺値を生成する式があります。
たとえば、定数は右辺値ですが左辺値ではありません。だから、:
1 = 2; // Not well formed, assigning to an rvalue
int i; (i + 1) = 2; // Not well formed, assigning to an rvalue.
は動作しませんが:
int i;
i = 2;
ありません。関数から左辺値を返すことができます。たとえば、operator =()を提供するオブジェクトへの参照を返すことができます。
コメントでPavel Minaevが指摘したように、これは言語の左辺値と右辺値の正式な定義ではありませんが、左辺値が必要な場合に右辺値を使用することについての誤解を混乱させる人に説明しようとします。 C++は多くの詳細を持つ言語です。あなたがフォーマルになるためには、正式なリファレンスを参照する必要があります。
"l"は、l-値が格納位置ロケータ値を定義するので、 "locator"の略です。 – sharkin
さらに悪いのは '= 10;です。 –
この定義は完全に正しいわけではありません。たとえば、 'std :: string'のインスタンスを返す関数は、一時的な値を返します。これは右辺値です。しかし、rvalueは 'operator ='を持ち、したがって '='の左側に現れることがありますが、rvalueとして非const参照にバインドされません。一方、 'const std :: string'変数は左辺です。constに代入することはできませんが(constであるため)、左辺値です。 –
これは、あなたが割り当てることができないもの(スカラー関数の結果のようなもの)に変換します。
コードのどこかでI値に無効な値を使用しようとしています。 l値は、値を割り当てることができる式です。
10 = x;
あなたの代わりに持っている必要があります:
x = 10;
をそれはおそらくあなたのケースでは、この明白ではありませんが
はたとえば、次のようなステートメントを持っているかもしれません。
必ずしも "メモリの場所"である必要はありません。 – strager
@strager:左辺値はオブジェクトを参照します。オブジェクトは格納領域です。 – sellibitze
コンパイルしよう:
5 = 3;
を、あなたがerror: lvalue required as left operand of assignment
典型的には、1つのC++に不慣れが第一の手段72を割り当てる
if ((x+1)==72) ...
の代わりに
if ((x+1)=72) ...
をコードかもしれないからx + 1(明らかに無効)72との間の等価性のテストとは対照的に、そして(x + 1)
R値は代入演算子の右側に常に表示される式です 例:
L値は、割り当ての左側または右側のいずれかに表示される式です。左側にある場合は、値を保持できる場所を示します。
Here
a
in expressiona = 5
is L Value
となり、右側の値に表示される場合はL値から読み取られます。それはそう
5 = 6 or 5 = a
は、コンパイルエラーになります左辺値などの任意の値を保持することはできません任意のメモリを検索する機能を持っていないR値以来 。
変数に値を割り当てます。逆のことをしようとすると、L値のエラーが発生します。
int x,y,z;
x=1;
y=2;
z=x+y; //Correct
x+y=z; //L-value required
私は同様の問題があったと私は問題がif文
左辺値の誤差にシングル '=' の代わりに '==' 二重のIを使用していることが分かっ:
if (n = 100) { code } // this is incorrect and comes back with the lvalue error
正しい:
if (n == 100) { code } // this resolved my issue
- 1. Lvalue required error with macro
- 2. VB6 'ランタイムエラー' 424 ':Object Required'エラー
- 3. なぜlvalueが必要ですか?
- 4. dispatch_semaphore_createのlvalue引数?
- 5. jquery.tokeninput required
- 6. エラー:Lvalueが必要です。説明が必要です
- 7. エラー:lvalueが代入の左側のオペランドに必要です
- 8. "割り当ての左オペランドに[エラー] lvalueが必要です。
- 9. バイナリ/ lvalueへの無効なオペランドの定義エラー
- 10. "実行時エラー '424:Object required"エラーが発生する
- 11. スプリングポストプロセッサー、オーダー、@Required
- 12. Nuke ChannelMask_Knob required argument
- 13. Jquery prop required error
- 14. output.filename is required webpack
- 15. Codeigniter required error
- 16. Commons CLI required groups
- 17. Javascriptエラーメッセージ - "Object required"
- 18. Required/ngRequiredのカスタムディレクティブ
- 19. LvalueからRvalueへの参照バインディング
- 20. iOS Objective-C required reading
- 21. laravel validation with required with
- 22. MySQL Show Required Class Completed
- 23. 角度2 ng-required
- 24. NodeJS&Electron:Async Multiple Required Files
- 25. Twitter OAuth1.0 failed - "Authorization Required"
- 26. AngularJS "407 Proxy Authentication Required"
- 27. @RequestBody optional(例:required = false)
- 28. WordPress add_filter preprocesscomment rating required
- 29. "stripes:errors"ボックスの "required field missing"エラーを1行に縮めます
- 30. 実行時エラー '424':Object Required IE.Document.GetElementById iframe内のテキストボックス
コードスニペットを投稿してください。 –
少なくともコピー・ペースト・ビルド・エラー・メッセージで質問を拡張する必要があります。なぜなら、人々はしばしばそれらを直接検索エンジンに供給するからです。 – sharkin