Skip to main content

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 ændringer, der verserer fra tidligere operationer og ingen beregninger i et fremtidig udtryk, der udføres endnu.Der er et antal steder, hvor sekvenspunkter findes mdash;primært defineret i C -sprogstandarden mdash;Såsom før udførelsen af koden inde i en funktion ved afslutningen 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 programmerere sig ikke eksplicit om et sekvenspunkt, selvom konceptet i oprettelsen af en kompilator er meget vigtigt for at sikre, at kode udføres korrekt.

Et eksempel på et sekvenspunkt i C -programmeringssproget er iErklæringen A ' A + B;.I dette udtryk er semikolonet sekvenspunktet;Når udtrykket er afsluttet, evalueres værdien af A og der ikke udføres nogen resterende beregninger på det, indtil det næste udtryk begynder.Det lige tegn er ikke et sekvenspunkt, fordi værdien af en kan ændres af kompilatoren i enhver rækkefølge under hele udtrykket.

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

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