web-dev-qa-db-fra.com

lvalue requis comme opérande gauche de l'erreur d'affectation lors de l'utilisation de C ++

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

si vous utilisez un opérateur d'affectation mais que vous l'utilisez de manière incorrecte ou au mauvais endroit, vous obtiendrez ce type d'erreurs!

supposez que si vous tapez:
p + 1 = p; vous obtiendrez l'erreur !!

vous obtiendrez la même erreur pour cela:
if (ch> = 'a' && ch = 'z')
comme vous le voyez, je peux voir que j'ai essayé d'assigner une instruction if () !!!
comme je suis bête !!! droite??
ha ha
en fait j'ai oublié de donner moins que le signe (<)
if (ch> = 'a' && ch <= 'z')
et a obtenu l'erreur !!

1
Rimon

C'est juste une faute de frappe (je suppose) -

p+=1;

au lieu de p +1=p; est requis .

Comme son nom l'indique, l'expression lvalue doit être l'opérande de gauche de l'opérateur d'affectation.

0
ameyCU

En termes simples, une valeur l est quelque chose qui peut apparaître sur le côté gauche d'une affectation, généralement une variable ou un élément de tableau.

Donc, si vous définissez int *p, puis p est une valeur l. p+1, qui est une expression valide, n'est pas une valeur l.

Si vous essayez d'ajouter 1 à p, la syntaxe correcte est:

p = p + 1;
0
dbush