Hvad er et sekvenspunkt?
Et sekvenspunkt i computerprogrammering er et øjeblik, der opstår 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 en række steder, hvor sekvenspunkter findes - primært defineret i C -sprogstandarden - såsom før udførelsen af koden inde i en funktion, ved afslutningen af kontroludtryk i udsagn som "for" og "if", og i slutningen af ethvert komplet udtryk, såsom en simpel linje af 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å en sekvens POINT på C -programmeringssproget er i udsagnet 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 punkterne til andet 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 det bruges som enn Indeks ind i matrixen I. Dette betyder, at kompilatoren kan øge en, 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 sekvenspunkt kan dybest set 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.