Syntax Feil i C ++

En av de enkleste og ofte vanskeligste å finne feil i programmeringen er en syntaksfeil. Som kode vokser i kompleksitet og størrelse, kan små feil i syntaks beskjære opp og forårsake hodepine. I et avvisende og grei programmeringsspråk som C ++, spiller syntaks en viktig rolle i hvordan språket fungerer. Noen vanlige syntaksfeil i C ++ kommer fra glemt eller forlagt symboler (for eksempel semikolon, parenteser og parentes), bruker feil betinget utsagn i looping strukturer, tildele feil datatyper til variabler, og misbruker pekere og referanser.

Misbruk av Basic symboler

C ++ bruker et sett av symboler for å representere visse vilkår. Semikolon (;), for eksempel, betegner enden av en kodelinje. En kodelinje må avsluttes med et semikolon, eller vil det være en feil. Videre blokker av kode som er en del av "hvis" uttalelser av løkker må ligge inne i klamme-bukseseler. Dette eksempelet viser hvordan disse feilene kan komme opp i kode:

mens (1)

(// Blokker av kode må vises i bukseseler, ikke parentes

int i = 1;

if (i% 2 == 0)

{

print jeg // ingen semikolon for å vise slutten av utsagnet

}

i ++;

}

Betinget utsagn i Loops

Looping strukturer i C ++ krever betinget utsagn som returnerer Sant eller usant verdier som avgjør hvorvidt sløyfen skal fortsette eller ikke. Imidlertid må sløyfe tilstand faktisk produsere en sannhetsverdi, enten gjennom en numerisk verdi eller gjennom en sammenligning av verdier. Videre forskjellige sløyfer krever forskjellig informasjon. Følgende eksempel viser to feil gjort ved hjelp av en "mens" loop og en "for" loop:

int i = 0;

while (1) // en lik sant i C ++, vil denne sløyfen løpe til uendelig

{

for (i; i <= 5; I--) // denne sløyfen vil aldri slutte fordi jeg aldri vil være større enn 5

{

/ Gjøre ting /

}

}

Mismatch mellom Variabeltype og Datatype

C ++ er et sterkt skrevet språk, noe som betyr at programmerere må erklære en variabel type når erklære variabelen. En variabel av type "heltall" må inneholde et heltall, og tilordne den en annen type vil skape en feil. I dette eksempelet er noen variabler av ulike typer tildelt datatyper som ikke samsvarer:

int i = 2,5 // tildele en flytende desimal til et heltall

char h = "Hei" // tildele en streng til en karakter variabel

int j = "HI" // tildele en streng til et heltall variabel

Pekere og referanser

Pekere er datatyper som refererer til en adresse i minnet i stedet for å holde data. På grunn av dette, pekere i det vesentlige "punkt til" en minneblokk, i stedet for direkte å holde disse dataene. Med "dereferencing" pekeren (med "*" symbol), kan programmereren tilgang til dataene i dette minnet. Men forskjellen mellom en peker og verdien den peker til kan føre til forvirring, som i følgende eksempel:

int i = 3;

int * j = & i; // J nå peker til adressen i

j = i; // J nå peker til minneadresse tre, betyr det ikke inneholder verdien 3

* J = i; // NÅ minnet referert av j inneholder verdien 3