C ++ Feiluttrykk må være en modifiserbar lValue

C ++ Feiluttrykk må være en modifiserbar lValue

Mens du skriver koden, kan forskjellige feil oppstå på utførelsestidspunktet. Det er forskjellige typer feil som logiske feil, syntaksfeil og kompilering av tidsfeil. Logiske feil er vanskelige å sjekke fordi ingen feil vises i denne typen feil mens syntaks og kompilering av tidsfeil kan oppdages på utførelsestidspunktet. I denne guiden vil vi også diskutere om "Feil: LValue som kreves som Venstre operand for tildeling" -type. Denne feilen oppstår for det meste mens du sammenligner to variabler eller heltall. Denne typen feil oppstår på grunn av en misoppfatning eller feil mens du skriver koden. Noen ganger har de nybegynnere programmererne misoppfatninger om oppgaver og sammenligningsoperatører som de står overfor denne typen feil. Noen ganger, mens koding, gjør programmereren feil og bruker oppdragsoperatøren i stedet for sammenligningsoperatøren. Dette er lett å løse fordi i utgangsdelen er beskrivelsen av feilen som er lValue påkrevd.

Syntaks:

Det er ingen slik spesifikk syntaks for dette fordi det ikke er en del av koden. Det er feilen som vises i utgangsområdet når vi utfører koden. Følgende er et eksempel på hvordan denne feilen ser ut:

Feil: LValue kreves som venstre operand for tildeling

I den tidligere nevnte feilen betyr lValue at objektet som kan ha et identifisert minneplassering. Vi kan også si at den har en spesifisert adresse i minnet der den er lagret. Når vi snakker om tildeling, kan det lagre dataene.

Eksempel 1:

Nå implementerer vi et eksempel der vi genererer denne typen feil og løser det. Vi vil først inkludere IOSTREAM -overskriftsfilen som gjør det mulig for kompilatoren å utføre I/O -operasjonene. Etter det lager vi tre heltallstype variabler i hovedmetoden. Den første heltallstypen er “A” som vi tildeler verdien “2”. Vi tildeler verdien “3” til den andre variabelen “B” samme som den tredje variabelen som er “C” der den holder verdien “3”. Etter det bruker vi en IF () uttalelse for å sammenligne variablene. Vi passerer to forhold: Den første tilstanden er at variabel “A” ikke er lik variabelen “B”. Den andre tilstanden er at variabelen “B” er lik variabelen “C”. Hvis begge uttalelsene er sanne, viser den meldingen "sammenligningsmatcher". Til slutt returnerer vi nullverdien.

#inkludere
ved hjelp av navneområdet STD;
int main ()

int a = 2;
int b = 3;
int c = 3;
hvis en != b && b = c)

std :: cout << "Comparison match" << std::endl;

retur 0;

Etter utførelsen av koden får vi en feil som viser at det er en feil som viser "Lvalue som kreves som venstre operand for tildeling". Som vi vet, oppstår feilen på nettet, og typen feil indikerer også at det er en venstre verdi (lvalue) som kreves til venstre for operanden den peker. Nå løser vi denne feilen ved å erstatte oppdragsoperatøren “=” med sammenligningsoperatøren “= =”. Deretter utfører vi koden igjen.

Etter å ha utført koden igjen, får vi denne utgangen som viser at vi utførte koden uten å ha noen feil. Det viser at forholdene våre er sanne.

Eksempel 2:

La oss utføre et annet eksempel for å få en bedre ide for å løse disse feilene. I dette eksemplet vil vi lage tre variabler, og med modus for to variabler sammenligner vi det med den tredje ved hjelp av IF-Else-setningen. Hvis sammenligningen samsvarer, beveger den seg inne i IF -uttalelsen. Hvis den ikke stemmer overens, utfører den den andre uttalelsen. La oss se på koden vår der vi først inkluderer overskriftsfilene våre, og flytter til hovedfunksjonen vår der vi erklærer de tre variablene som heter “Val1”, “Val2” og “Val3” som vi tildeler verdiene “2” , “3”, og “5”. Etter det, ved å bruke IF -setningen, sammenligner vi modus for "VAL1" og "VAL2" -variabler med den tredje variabelen, "VAL3". Hvis dette stemmer overens, blir vår IF -anvisning indre kode utført. Hvis det ikke er sant, blir den andre uttalelsen utført. På slutten utfører vi koden vår ved å returnere nullverdien.

#inkludere
ved hjelp av navneområdet STD;
int main ()
int val1 = 2;
int val2 = 3;
int val3 = 5;
if ((val1%val2) = val3)

std :: cout << "Comparison is a match" << std::endl;

ellers

std :: cout << "Comparison doesn't match" << std::endl;

retur 0;

Etter å ha utført koden vår, oppdager vi denne typen feil som indikerer at vi savnet LValue som den venstre operanden til oppgaven indikerer variabelen “VAL3”. Dette betyr at den manglende lValue er til venstre for "Val3" -variabelen. Siden sammenligningsoperatøren ikke brukes i dette tilfellet og tildelingsoperatøren brukes i stedet, oppstår en feil. En ting til å huske på er at vi ikke kan tildele verdien til noen variabel i IF () -uttalelsen. IF () -uttalelsen brukes til sammenligning av variablene og ikke for å tilordne verdiene til variabelen. Det er grunnen til at den viser denne feilen. Nå løser vi dette problemet ved å erstatte oppdragsoperatøren med sammenligningsoperatøren. Deretter utfører vi koden på nytt.

Etter gjenutførelsen av koden vår viser vi meldingen - "Sammenligning stemmer ikke overens". Årsaken til å få denne meldingen er at andre uttalelser blir utført som sett i forrige kode. Vi lager tre variabler som vi tildeler verdiene og modus for to verdier sammenlignes med den tredje. Her er modus for "VAL1" og "VAL2" "0.6 ”, sammenligne det med VAL3 som inneholder tallet“ 5 ”. Det er ikke sant at verdien av “val3” er lik “0.6 ”. Kompilatoren ignorerer IF -uttalelsen indre kode og utfører ellers uttalelse.

Konklusjon

I denne opplæringen diskuterte vi kompileringstidsfeilen som sannsynligvis oppstår på grunn av en misoppfatning eller feil som gjøres av programmereren. Vi forklarte feilen med en kort beskrivelse og med flere eksempler for å gjøre dette enkelt for deg å ha en ide om det og metoden for å løse og forstå feiltypen. Vi gjorde alt for å gjøre det så enkelt som mulig for deg å fikse denne feilen når den dukker opp i koden din mens du skriver et program.