Hvad er et sekvenspunkt?

Et sekvenspunkt i computerprogrammering er et øjeblik, der forekommer under programudførelse, når værdien af ​​en variabel er blevet beregnet fuldstændigt, uden at der er nogen ændringer, der verserer fra tidligere operationer og ingen beregninger i et fremtidig udtryk udføres endnu. Der er et antal steder, hvor der findes sekvenspunkter - primært defineret i C-sprogstandarden - såsom før udførelsen af ​​koden i en funktion, i slutningen af ​​kontroludtryk i udsagn som "for" og "hvis", og i slutningen af ​​ethvert komplet udtryk, såsom en simpel linje med C-kode. Nogle grunde til at definere et sekvenspunkt er at undgå situationer, der er tvetydige, resulterer i udefineret opførsel eller kan forvirre kompilatoren og generere kode, der er uforudsigelig. I mange tilfælde bekymrer programmører sig ikke eksplicit om et sekvenspunkt, skønt konceptet i oprettelsen af ​​en compiler er meget vigtigt for at sikre, at kode udføres korrekt.

Et eksempel på et sekvenspunkt i programmeringssproget C er i sætningen A = A + B; I dette udtryk er semikolon sekvenspunktet; når udtrykket er afsluttet, evalueres værdien af ​​A, og der udføres ingen resterende beregninger på det, indtil det næste udtryk begynder. Det lige tegn er ikke et sekvenspunkt, fordi værdien af ​​A muligvis ændres af kompilatoren i en hvilken som helst rækkefølge i hele udtrykket.

Hovedreglen for et sekvenspunkt er, at der ikke fås adgang til nogen variabel mere end én gang mellem punkter til andet formål end at beregne en ændring i dens værdi. En overtrædelse af denne regel udtrykkes bedst, når der tildeles en værdi til en matrix. Hvis der er en variabel A og en matrix kaldet I, så grammatisk i C er det muligt at skrive udtrykket I [A] = A ++. Her åbnes variablen mere end én gang til et andet formål end at evaluere dens aktuelle værdi; det bruges nemlig som et indeks i array I. Dette betyder, at compileren muligvis kan øge A, før den bruges som et indeks, eller efter at den er brugt, hvilket skaber uforudsigelig opførsel, som ikke kan være pålidelig i programmet.

Et sekvenspunkt kan grundlæggende ses som en måde at sikre, at udsagn kan og vil blive evalueret og udført konsekvent af en compiler. Dette giver også en compiler mulighed for at anvende optimeringsstrategier, fordi den definerede opførsel er forudsigelig. Inden for C-sprogstandarden er der tre vigtigste forekomster af sekvenspunkter, nemlig når en funktion begynder udførelse, på det punkt for logiske operatører og kommaer, og i slutningen af ​​et komplet udtryk, der slutter med en semikolon, som de fleste C-udsagn gør .

ANDRE SPROG

Hjalp denne artikel dig? tak for tilbagemeldingen tak for tilbagemeldingen

Hvordan kan vi hjælpe? Hvordan kan vi hjælpe?