Wat is een sequentiepunt?

Een sequentiepunt in computerprogrammering is een moment dat optreedt tijdens de uitvoering van het programma wanneer de waarde van een variabele volledig is berekend, zonder wijzigingen in afwachting van eerdere bewerkingen en nog geen berekeningen in een toekomstige expressie die wordt uitgevoerd. Er zijn een aantal plaatsen waar sequentiepunten bestaan ​​- voornamelijk gedefinieerd in de C -taalstandaard - zoals vóór de uitvoering van de code in een functie, aan het einde van controle -expressies in verklaringen zoals "voor" en "if", en aan het einde van een volledige uitdrukking, zoals een eenvoudige lijn van C -code. Sommige redenen om een ​​sequentiepunt te definiëren, zijn om situaties te voorkomen die dubbelzinnig zijn, resulteren in ongedefinieerd gedrag of de compiler kunnen verwarren en code kunnen genereren die onvoorspelbaar is. In veel gevallen maken programmeurs zich geen expliciet zorgen over een sequentiepunt, hoewel het concept bij het maken van een compiler erg belangrijk is om ervoor te zorgen dat de code correct wordt uitgevoerd.

Een voorbeeld van een sequentiepoiNT in de C -programmeertaal staat in de verklaring A = A + B;. In deze uitdrukking is de puntkomma het sequentiepunt; Wanneer de uitdrukking is voltooid, wordt de waarde van A geëvalueerd en worden er geen resterende berekeningen op uitgevoerd totdat de volgende uitdrukking begint. Het gelijke teken is geen sequentiepunt, omdat de waarde van A door de compiler in elke bestelling gedurende de uitdrukking kan worden gewijzigd.

De hoofdregel van een sequentiepunt is dat geen variabele meer dan eens wordt toegankelijk tussen andere punten voor enig ander doel dan om een ​​wijziging in de waarde ervan te berekenen. Een schending van deze regel wordt het best uitgedrukt bij het toewijzen van een waarde aan een array. Als er een variabele A en een array worden genaamd I, dan grammaticaal in C is het mogelijk om de uitdrukking I [a] = a ++ te schrijven. Hier is de variabele meer dan eens toegankelijk voor een ander doel dan het evalueren van de huidige waarde; namelijk het wordt gebruikt als eenn index in de array I. Dit betekent dat de compiler een verhoogde kan maken voordat deze wordt gebruikt als een index of nadat deze is gebruikt, waardoor onvoorspelbaar gedrag wordt gecreëerd dat niet in het programma kan worden ingeroepen.

Een sequentiepunt kan in principe worden gezien als een manier om ervoor te zorgen dat uitspraken consistent kunnen en zullen worden geëvalueerd en uitgevoerd door een compiler. Hierdoor kan een compiler ook optimalisatiestrategieën gebruiken, omdat het gedefinieerde gedrag voorspelbaar is. Binnen de C -taalstandaard zijn er drie hoofdinstanties van sequentiepunten, namelijk wanneer een functie begint met de uitvoering, op het punt van logische operators en komma's, en aan het einde van een volledige uitdrukking die eindigt met een puntkomma, zoals de meeste C -instructies doen.

ANDERE TALEN