2

C ++プログラムのコンパイル中に「l-valuerequired」エラーが発生するのはいつですか?(VC ++を使用しています)

4

11 に答える 11

11

「左辺値」は、割り当てのターゲットになり得る値です。「l」は、等号の左側にあるように、「左」を表します。右辺値は右側の値であり、値を生成するため、直接割り当てることはできません。「左辺値が必要」を取得している場合は、左辺値が必要なときに右辺値を生成する式があります。

たとえば、定数は右辺値ですが、左辺値ではありません。それで:

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 ++は、多くの詳細を備えた言語です。正式に取得したい場合は、正式なリファレンスを参照してください。

于 2009-08-30T08:00:14.190 に答える
3

これは、割り当てることができないもの(スカラー関数の結果など)に割り当てようとしているときに発生します。

于 2009-08-30T07:56:30.627 に答える
2

通常、C++に慣れていない人はコーディングするかもしれません

if ((x+1)=72) ...

代わりに

if ((x+1)==72) ...

最初の手段は、72と(x + 1)の間の同等性をテストするのではなく、72をx + 1(明らかに無効)に割り当てることを意味します。

于 2009-08-31T21:23:58.077 に答える
1

コードのどこかでl値に無効な値を使用しようとしています。l値は、値を割り当てることができる式です。

たとえば、次のようなステートメントがあるとします。

10 = x;

代わりに必要な場所:

x = 10;

あなたの場合、それはおそらくこれほど明白ではありませんが。

于 2009-08-30T07:59:55.517 に答える
1

例を取る

* int a = 10、b = 20;

int c = ++(a b + 1); 上記のコードではエラーが発生します。これは、角かっこ内に、インクリメント操作を実行する式ontがあり、これは不可能であるためです。したがって、それを行う前に、その値をいくつかの変数に格納する必要があります。したがって、上記のコードでは、「左辺値」のエラーが必要になります。

于 2018-12-20T18:39:16.850 に答える
0

コンパイルしてみてください:

5 = 3;

そしてあなたは得るerror: lvalue required as left operand of assignment

于 2009-08-30T08:00:02.083 に答える
0

R値は、代入演算子の右側に常に表示される式です。例:

int a =5;//ここで5はRvalueです

L値は、割り当ての左側または右側に配置できる式です。左側にある場合は、値を保持できる場所を指します。

ここaでの表現a = 5はL値です

右側に表示されている場合、値はL値から読み取られます。メモリを見つける機能がないR値は、LValueのような値を保持できないため、

5=6または5=a

コンパイラエラーになります。

于 2009-09-01T09:55:05.740 に答える
0

変数に値を割り当てます。逆のことをしようとすると、L値エラーが発生します。

int x,y,z;
x=1;
y=2;
z=x+y; //Correct
x+y=z; //L-value required
于 2014-08-12T10:27:35.010 に答える
0

同様の問題が発生しましたが、問題は、ifステートメントで二重の「==」ではなく単一の「=」を使用したことであることがわかりました。

左辺値エラー:

 if (n = 100) { code } // this is incorrect and comes back with the lvalue error

正しい:

if (n == 100) { code } // this resolved my issue
于 2014-10-08T18:15:33.447 に答える
0

これは、定数の値を操作しようとしたときに発生します。これは、許可されていない増分または減分である可能性があります。`

#define MAX 10
void main(){
int num;
num  = ++MAX;
cout<<num;
}
于 2018-12-28T14:49:25.063 に答える
0

実際、このエラーは、「;」を付けないと非常に頻繁に発生します。そして、おそらくこのエラーを与える変数の前にあった変数を宣言しないでください。宣言しないと、宣言されていない変数に値を割り当てることができないため、このエラーがスローされます...スマートボーイ!

于 2019-12-11T20:00:27.433 に答える