lvalue vereist als linker operand van toewijzingsfout bij gebruik van C++

Als je een toewijzingsoperator in een instructie hebt, moet de LHS van de operator iets zijn dat de taal een lvalue noemt. Als de LHS van de operator niet evalueert tot een lwaarde, kan de waarde van de RHS niet worden toegewezen aan de LHS.

U kunt het volgende niet gebruiken:

10 = 20;

aangezien 10 niet resulteert in een lvalue.

U kunt gebruiken:

int i;
i = 20;

sinds i evalueert tot een lvalue.

U kunt het volgende niet gebruiken:

int i;
i + 1 = 20;

aangezien i + 1 niet evalueert tot een lvalue.

In jouw geval evalueert p + 1 niet tot een lavalue. Daarom kunt u niet

p + 1 = p;

Antwoord 1, autoriteit 100%

Om toe te wijzen, moet u p=p+1; gebruiken in plaats van 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();
}

Antwoord 2, autoriteit 25%

Eenvoudig gezegd, een l-waarde is iets dat aan de linkerkant van een toewijzing kan verschijnen, meestal een variabele of een array-element.

Dus als je int *p definieert, dan is p een lwaarde. p+1, wat een geldige uitdrukking is, is geen lwaarde.

Als u 1 probeert toe te voegen aan p, is de juiste syntaxis:

p = p + 1;

Antwoord 3, autoriteit 25%

als u een toewijzingsoperator gebruikt, maar deze op de verkeerde manier of op de verkeerde plaats gebruikt,
dan krijg je dit soort fouten!

stel als je typt:
p+1=p; je krijgt de fout!!

u krijgt hiervoor dezelfde foutmelding:
if(ch>=’a’ && ch=’z’)
zoals je ziet kan ik zien dat ik heb geprobeerd toe te wijzen in if() statement!!!
wat ben ik dom!!! toch??
haha

eigenlijk vergat ik minder dan (<) teken te geven
if(ch>=’a’ && ch<=’z’)

en kreeg de fout!!


Antwoord 4

Het is gewoon een typfout (denk ik)-

p+=1;

in plaats van p +1=p; is vereist.

Zoals de naam doet vermoeden, moet de uitdrukking lvalue de linkeroperand van de toewijzingsoperator zijn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

four × one =

Other episodes