Feil ISO forbyr sammenligning mellom pekeren og heltall

Feil ISO forbyr sammenligning mellom pekeren og heltall
Denne artikkelen handler om en feil som ofte oppstår mens du sammenligner pekere og heltall. Før vi går videre til emnet vårt, bør vi vite hva ISO er. ISO står for International Standards Organization. Dette selskapet utvikler og publiserer internasjonale standarder. Mens programmering på C ++ språk, får vi ofte denne feilen som ISO forbyr sammenligning mellom pekeren og heltall. Denne feilen forekommer også på andre språk som C -språk. Hovedspørsmålet oppstår om hvorfor ISO ikke tillater sammenligninger mellom pekere og heltall.

Svaret er at på C ++ språk når en programmerer prøver å sammenligne to forskjellige datatyper, vil systemet kaste sammenligningsfeilen. Så et heltall er en annen datatype og en peker er en hukommelsesadresse. Derfor vil kompilatoren gi en feil fordi de begge er forskjellige datatyper. Denne feilen oppstår ikke bare mens du sammenligner pekere og heltall, den oppstår når vi prøver å sammenligne to variabler av forskjellige datatyper.

Syntaks

Det er en feilmelding slik at den ikke har noen syntaks, men vi kan vise deg hvordan denne feilen ser ut:

Feil: ISO C ++ forbyr sammenligning mellom pekeren og heltall [-fpermissiv]

Eksempel # 01:

For å forstå feilen i dybden vil vi utføre et eksempel der vi vil sammenligne variabelen vår med en annen datatype, og vi vil se om systemet kaster en feil eller ikke. For det formålet har vi erklært en karaktergruppe som heter “X” med en lengde på 5. Vi har skrevet ut meldingene våre for brukerlesbarhet. Hvis vi tar en titt på linje nummer 4, vil vi se at vi sammenligner variabelen vår med ordet 'hei'. Hensikten med koden vår er hvis verdiene til vår variabel og bestått verdikamp. Kompilatoren skal gå inn i IF -tilstanden. Etter det kommer kompilatoren tilbake (0) og avslutter med hell fra koden vår. La oss nå utføre koden vår.

#inkludere
ved hjelp av navneområdet STD;
char x [5];
cout x;
if (x == 'hei')

cout<<"Hi How are You";

return (0);

Etter å ha utført koden vår, vil vi få følgende feil fra kompilatoren vår som et resultat. Hvis vi ser nøye på feilmeldingen, kan vi se at kompilatoren har påpekt en feil på linje 7. Dette er linjen der vi prøvde å sammenligne variabelen vår med en verdi "hei". Kompilatoren tar strenger eller karakterer i doble sitater som (“Hallo”). Men her har vi passert verdien i enkelt sitater som ('Hallo'). Så datatypene stemmer ikke overens, og kompilatoren gjenkjenner vår passerte verdi som peker. På grunn av alt dette vil ikke kompilatoren kunne gjøre en sammenligning mellom dem, og den vil kaste en feil som vi kan se på figuren nedenfor i rød farge.

La oss nå prøve å løse feilen og utføre koden vår. For det formålet, i vårt tilfelle, vil vi bare måtte endre den passerte verdien fra 'Hello' til "Hello" slik at systemet gjenkjenner det som en karakter. Vi vil ganske enkelt endre enkelt sitater med doble sitater. Etter det vil vi utføre koden vår.

Etter å ha utført koden vår, er figuren ovenfor hvordan vår utdata vil se ut. Kompilatoren har utført koden vår og skrevet ut det vi ba den om å skrive ut. Etter det viser det oss meldingen om at programmet endte med exit code 0 fordi vi til slutt returnerte 0 fra hovedfunksjonen vår. Så vi kan se at ved bare å passere riktig datatype, har vi løst problemet vårt.

Eksempel # 02:

I forrige eksempel forklarte vi hvordan kompilatoren kaster en feil. Men vi tok ikke et heltall som vår variabel. Vi tar et heltall og vil prøve å sammenligne det med pekeren. For å gjøre det, har vi initialisert en matrise “I” med 1 lengde. Vi har erklært en annen variabel R som er et heltall og passert det verdien 4. Vi vil se om verdiene samsvarer med systemet skal returnere 1, og hvis de ikke er like, vil systemet returnere 0. Så la oss utføre koden vår for å se hva som skjer.

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

int i [1];
int r = 4;

hvis jeg != r)

return (0);

ellers
return (1);


Etter utførelsen av koden vår er dette utdataene. Systemet har gitt oss feilen igjen. I dette tilfellet er det på linje 10. Hvis vi går tilbake og ser på koden vår, vil vi se at på linje 10, sammenligner vi vårt utvalg med heltallet vårt. Vi har ikke spesifisert hvilken indeks vi sammenligner. Så systemet vil sammenligne hele minnet med heltallet vårt. I koden vår vil minnet være en peker. Systemet vil gi oss feilen på grunn av denne inkonsekvente datatypen.

Nå vil vi løse feilen. For å gjøre det, vil vi ganske enkelt fortelle lengden på vårt utvalg til systemet. For det vil vi erstatte “jeg” med “i [1]” slik at systemet vil ta heltallet fra indeksen for vårt utvalg og vil sammenligne det heltallet med vårt tilpassede erklærte heltall som er “R”.

Nå i bildet over kan vi se at koden vår blir utført og returnert til oss 0. Dette betyr at jeg [1] ikke er lik R. Men det viktigste er at feilen blir løst og koden blir samlet og utført med suksess og utført. Hvis verdiene var de samme, ville systemet ha returnert 1.

Konklusjon

I denne guiden diskuterte vi en feil som oppstår mens vi skrev kode. Vi forklarte hvorfor denne feilen oppstår, hvilke feil en programmerer gjør som førte til denne feilen, og hvordan du kan unngå og løse feilen. Vi utførte også forskjellige eksempler og prøvde å få denne feilen under forskjellige forhold. Etter det løste vi feilene og påpekte feilene i koden vår for å hjelpe deg med å forstå bedre.