2015-10-27 8 views
-2
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(); 
} 
+0

Что вы ожидаете от результата 'p + 1 = p'? –

+0

Это код не C, а C++. Измените тег и название! – Olaf

ответ

11

Если у вас в операторе есть оператор присваивания, LHS оператора должен быть чем-то, что язык вызывает lvalue. Если LHS оператора не оценивает значение lvalue, значение от RHS не может быть присвоено LHS.

Вы не можете использовать:

10 = 20; 

так 10 не оценивает к Lvalue.

Вы можете использовать:

int i; 
i = 20; 

поскольку i делает оценку к Lvalue.

Вы не можете использовать:

int i; 
i + 1 = 20; 

так i + 1 не оценивает к Lvalue.

В вашем случае p + 1 не оценивает lavalue. Таким образом, вы не можете использовать

p + 1 = p; 
3

Для назначения, вы должны использовать p=p+1; вместо p+1=p;

int main() 
{ 

    int x[3]={4,5,6}; 
    int *p=x; 
    p=p+1; /*You just needed to switch the terms around*/ 
    cout<<p<<endl; 
    getch(); 
} 
+0

спасибо, я не знал о оценке lvalues –

0

Это просто опечатка (я думаю) -

p+=1; 

вместо p +1=p; не требуется.

Как следует из названия lvalue выражение должно быть левым операндом оператора присваивания.

0

Проще говоря, именующее это то, что может появиться на левой части присваивания, обычно переменной или элемента массива.

Так что, если вы определяете int *p, то p является lvalue. p+1, который является допустимым выражением, не является значением lvalue.

Если вы пытаетесь добавить 1 к p, правильный синтаксис:

p = p + 1; 
1

, если используется оператор присваивания, но использовать его в неправильном направлении или в неправильном месте, , то вы получите эти типы ошибок!

предположим, если вы наберете:
p + 1 = p; вы получите ошибку!

вы получите ту же ошибку, для этого:
если (ч> = «а» & & ч = «г»)
, как вы видите, можно видеть, что я я пытался назначить, если() заявление!!!
как глупо я !!! правильно??
ха-ха
на самом деле я забыл дать меньше (<) знак
если (ч> = 'а' & & ч < = 'г')
и получил ошибку !!

 Смежные вопросы

  • Нет связанных вопросов^_^