3. Operatoren

Operatoren verhalten sich wie vordefinierte Funktionen, die Bestandteil der Skriptsprache sind. So setzt sich beispielsweise der Ausdruck (X + Y) aus den Variablen X und Y (den sogenannten Operanden) und dem Operator + zusammen. Wenn X und Y den Typ Integer oder Real haben, liefert der Ausdruck (X + Y) die Summe der beiden Werte zurück. Operatoren sind not, *, /, div, mod, and, +, -, or, xor, =, >, <, <>, <= und >=.
Alle anderen Operatoren sind binär und haben zwei Operanden. Eine Ausnahme bilden die Operatoren + und -, die entweder unär oder binär sein können. Ein unärer Operator steht immer vor seinem Operanden (z.B. -B). Binäre Operatoren stehen immer zwischen ihren Operanden (z.B. A = 7).
Das Verhalten einiger Operatoren hängt von dem Datentyp ab, der an sie übergeben wird. Beispielsweise führt der Operator not eine bitweise Negation eines Integer-Operanden und eine logischen Negation eines Booleschen Operanden aus. Solche Operatoren sind deshalb auch mehreren Kategorien zugeordnet.
In komplexen Ausdrücken wird die Reihenfolge, in der Operationen ausgeführt werden, durch die Rangfolge der Operatoren festgelegt.
Operator
Rangfolge

not erste (höchste)
*, /, div, mod, and zweite
+, or, xor dritte
=, <>, <, >, <=, >= vierte (niedrigste)
Ein Operator mit einer höheren Rangfolge wird vor einem Operator mit einer niedrigeren Rangfolge ausgewertet. Operatoren mit gleicher Rangfolge werden von links nach rechts ausgewertet. Aus diesem Grund multipliziert der folgende Ausdruck zunächst Y mit Z und addiert dann X zum Resultat der Multiplikation:
X + Y * Z
Die Operation * (Multiplikation) wird zuerst ausgeführt, weil dieser Operator eine höhere Rangfolge als der Operator + hat. Im folgenden Ausdruck wird aber zunächst Y von X subtrahiert und danach Z zum Resultat addiert:
X - Y + Z
Die Operatoren und + weisen dieselbe Rangfolge auf. Aus diesem Grund wird die Operation auf der linken Seite zuerst ausgeführt. Mit Hilfe von runden Klammern lassen sich die Rangfolgeregeln außer Kraft setzen. Ein Ausdruck in runden Klammern wird immer zuerst ausgewertet und danach wie ein einzelner Operand behandelt. Der folgende Ausdruck multipliziert Z mit der Summe von X und Y:
(X + Y) * Z
Manchmal sind Klammern in Situationen erforderlich, die dies auf den ersten Blick nicht vermuten lassen. Sehen Sie sich den folgenden Ausdruck an:
X = Y or X = Z
Die beabsichtigte Interpretation lautet offensichtlich (X = Y) or (X = Z)
Wenn keine Klammern gesetzt werden, hält sich der Compiler an die Regeln für die Rangfolge der Operatoren und interpretiert den Ausdruck folgendermaßen:
(X = (Y or X)) = Z
Wenn Z nicht vom Typ Boolean ist, führt dies zu einem Compilierungsfehler. Klammern erleichtern zwar häufig das Schreiben und Lesen des Quelltextes, sind aber strenggenommen überflüssig. Das erste der obigen Beispiele könnte auch folgendermaßen formuliert werden:
X + (Y * Z)
Hier sind die Klammern (für den Compiler) unnötig, erleichtern aber dem Programmierer und dem Leser die Interpretation, weil die Regeln für die Operatorrangfolge nicht berücksichtigt werden müssen.