Hva er et sekvenspunkt?
Et sekvenspunkt i dataprogrammering er et øyeblikk som oppstår under programutførelse når verdien av en variabel er blitt fullstendig beregnet, uten endringer i påvente av tidligere operasjoner og ingen beregninger i et fremtidig uttrykk som utføres ennå. Det er en rekke steder der sekvenspunkter eksisterer - først og fremst definert i C -språkstandarden - for eksempel før utførelsen av koden i en funksjon, på slutten av kontrolluttrykk i utsagn som "for" og "hvis", og på slutten av et komplett uttrykk, for eksempel en enkel linje med C -kode. Noen grunner til å definere et sekvenspunkt er å unngå situasjoner som er tvetydige, resultere i udefinert oppførsel eller kan forvirre kompilatoren og generere kode som er uforutsigbar. I mange tilfeller bekymrer programmerere seg ikke eksplisitt for et sekvenspunkt, selv om konseptet i opprettelsen av en kompilator er veldig viktig for å sikre at koden blir utført riktig.
Et eksempel på en sekvens POINT på C -programmeringsspråket er i uttalelsen A = A + B;. I dette uttrykket er semikolonet sekvenspunktet; Når uttrykket er fullført, vil verdien av a bli evaluert og ingen gjenværende beregninger vil bli utført på det før neste uttrykk begynner. Det likeverdige tegnet er ikke et sekvenspunkt, fordi verdien av A kan endres av kompilatoren i noen rekkefølge gjennom hele uttrykket.
Hovedregelen for et sekvenspunkt er at det ikke får tilgang til noen variabel mer enn en gang mellom punkter for noe annet formål enn å beregne en endring i verdien. Et brudd på denne regelen uttrykkes best når du tildeler en verdi til en matrise. Hvis det er en variabel A og en matrise som heter I, er det grammatisk i C, det er mulig å skrive uttrykket i [a] = a ++. Her får variabelen tilgang mer enn en gang for et annet formål enn å evaluere dens nåværende verdi; nemlig det brukes som enn Indeks i matrisen I. Dette betyr at kompilatoren kan øke A før den brukes som en indeks eller etter at den er brukt, og skaper uforutsigbar atferd som ikke kan stole på i programmet.
Et sekvenspunkt kan i utgangspunktet sees på som en måte å sikre at utsagn og vil bli evaluert konsekvent og utført av en kompilator. Dette gjør det også mulig for en kompilator å bruke optimaliseringsstrategier, fordi den definerte atferden er forutsigbar. Innen C -språkstandarden er det tre hovedforekomster av sekvenspunkter, nemlig når en funksjon begynner utførelse, på tidspunktet for logiske operatører og komma, og på slutten av et komplett uttrykk som ender med en semikolon, som de fleste C -utsagn gjør.