web-dev-qa-db-ja.com

C ++を使用する場合、代入エラーの左オペランドとしてlvalueが必要

int main()
{

   int x[3]={4,5,6};
   int *p=x;
   p +1=p;/*compiler shows error saying 
            lvalue required as left 
             operand of assignment*/
   cout<<p 1;
   getch();
}
3
Kishan Kumar

代入演算子を使用しているが、使用方法や場所が間違っていると、このタイプのエラーが発生します。

次のように入力したとします。
p + 1 = p;エラーが発生します!!

これと同じエラーが発生します:
if(ch> = 'a' && ch = 'z'
ご覧のとおり、私はif()ステートメントで割り当てようとしました!!!
私はばかげています!!!正しい??
ハハ
実際には、より少ない(<)記号を与えるのを忘れました
if(ch> = 'a' && ch <= 'z')
エラーが発生しました!!

1
Rimon

それは単なるタイプミスです(私は推測します)-

p+=1;

の代わりに p +1=p; 必要とされている 。

名前が示すように、lvalue式は代入演算子の左側のオペランドにする必要があります。

0
ameyCU

簡単に言えば、左辺値は割り当ての左側に表示できるもので、通常は変数または配列要素です。

したがって、int *pの場合、pは左辺値です。 p+1は有効な式であり、左辺値ではありません。

pに1を追加する場合、正しい構文は次のとおりです。

p = p + 1;
0
dbush