Die Stärke des Operators entscheidet bei fehlender Klammerung über
die Auswertungsreihenfolge in Ausdrücken.
Beispiel:
a + b * c wird ausgewertet als a + ( b * c ), und
nicht als ( a + b ) * c.
Aus der Stärke der Operatoren leitet sich die Rangfolge der Operatoren ab.
Bei Links-Assoziativität werden Ausdrücke mit Operatoren gleicher
Stärke von links nach rechts ausgewertet.
Beispiel:
a * b * c wird ausgewertet als ( a * b ) * c, und
nicht als a * ( b * c ).
Mit Ausnahme des Zuweisungsoperators sind in Pascal alle Operatoren links-assoziativ.
Rangfolge der Operatoren (Vorrangregeln)
Die Rangfolge bestimmt, in welcher Reihenfolge die Auswertung in
Ausdrücken erfolgt, in der mehrere Operatoren zum Einsatz
kommen.
Standard Pascal
Die Rangfolge der Operatoren läßt sich verbal wie folgt angeben:
Allgemein lassen sich folgende Auswertungsregeln formulieren:
Beispiel:
Höchste Priorität
1 | NOT
2 | * / DIV MOD AND
3 | + - OR
4 V = <> < <= > >= IN
Niedrigste Priorität
Delphi
Höchste Priorität
1 | NOT @
2 | * / DIV MOD AS AND SHL SHR
3 | + - OR XOR
4 V = <> < <= > >= IN IS
Niedrigste Priorität
Verbal läßt sich Rangfolge der Operatoren wie folgt angeben:
Extended Pascal
Höchste Priorität
1 | NOT
2 | ** POW
3 | * / DIV MOD
4 | + - OR
5 V = <> < <= > >= IN
Für andere Pascal-Versionen gelten die Schemata - soweit die Operatoren
verfügbar sind - analog.
Die Vorrangregeln für Operatoren sind in allen
Programmiersprach(version)en ähnlich, jedoch im Detail nicht identisch.
Im Zweifelsfall ist es ratsam, durch Klammersetzung die gewünschte
Rangfolge zu erzwingen.
Andererseits sollte jedoch auch übermäßige Klammersetzung
vermieden werden, da sonst die Lesbarkeit leidet.
Im Interesse der Lesbarkeit ist es ferner, "Bandwurmausdrücke" zu
vermeiden.
VAR i, j : INTEGER;
{ liefert }
Writeln( i AND j > 0 ); { Syntaxfehler in Standard Pascal }
{ logischen Wert in and. Systemen }
P. Böhme, 07.09.1996