いつ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. dispatch_semaphore_createのlvalue引数?
- 3. jquery.tokeninput required
- 4. バイナリ/ lvalueへの無効なオペランドの定義エラー
- 5. Javascriptエラーメッセージ - "Object required"
- 6. スプリングポストプロセッサー、オーダー、@Required
- 7. Commons CLI required groups
- 8. LvalueからRvalueへの参照バインディング
- 9. iOS Objective-C required reading
- 10. @RequestBody optional(例:required = false)
- 11. "stripes:errors"ボックスの "required field missing"エラーを1行に縮めます
- 12. C++フォワード宣言エラー - Lvalueをバインドすることはできません
- 13. Mono.Cecil、Missing compiler required member 'System.Runtime.CompilerServices.ExtensionAttribute..ctor'
- 14. @TransactionAttribute(REQUIRED)は無効です
- 15. デフォルトのメッセージ "Validation Error:Value is required"を単に "Value is required"に変更する
- 16. 目的C単項「&」オペランドとして必要なLValue
- 17. VBScriptの「Required = False」をMS Accessファイル
- 18. TransactionScopeOptionsについて:RequiresNew = Suppress + Required?
- 19. Springでのトランザクション "REQUIRED"の伝播
- 20. jquery validate-plugin required(依存関係式)
- 21. Angular JS textarea validation with required&showing error message
- 22. Java enum:リファクタリングswitch文 'constant expression required'コンパイルエラー?
- 23. Angular 2条件付きバリデータ.required?
- 24. ANTLR文法と構文述語のLvalue認識
- 25. lvalueは評価後にオブジェクトを指定しませんか?
- 26. アライメントエラーの左側のオペランドにLvalueが必要です
- 27. gccがlvalueについて何か混乱していますか?
- 28. <f:viewParam required>が@NotNullプロパティで失敗したときにHTTP 400エラーを送信します。
- 29. ATLダイアログで変数を追加するときに "Object required"エラーを回避する方法
- 30. IE7のjspからjavascriptを呼び出すときに "Object Required"エラーが発生する
コードスニペットを投稿してください。 –
少なくともコピー・ペースト・ビルド・エラー・メッセージで質問を拡張する必要があります。なぜなら、人々はしばしばそれらを直接検索エンジンに供給するからです。 – sharkin