In der Programmiersprache Delphi gibt es viele Operatoren. Ich möchte hier versuchen, diese zu erläutern.
Man kann diese – ebenso wie die Schleifen – auf andere Programmiersprachen wie C#, C++, PHP, Visual Basic… übertragen.
Allerdings ist auch hier wieder Vorsicht geboten.
Arithmetische Operatoren
Arithmetische Operatoren verknüpfen zwei Werte von Variablen oder Konstanten und liefern das entsprechende Ergebnis zurück. Wichtig ist, dass der Typ des Ergebnisses von den Eingangstypen und von der Operation abhängt.
Für ganzzahlige Berechnungen gibt es zwei spezielle Operatoren: div und mod.
Operator | Operation | Eingangstypen | Ergebnistyp |
---|---|---|---|
+ | Addition | ganzzahlig, reell | ganzzahlig, reell |
– | Subtraktion | ganzzahlig, reell | ganzzahlig, reell |
* | Multiplikation | ganzzahlig, reell | ganzzahlig, reell |
/ | Division | ganzzahlig, reell | reell |
div | ganzzahlige Division | ganzzahlig | ganzzahlig |
mod | Rest einer ganzzahligen Division | ganzzahlig | ganzzahlig |
Hinweis zum Plus-Operator (+): Sind beide Variablen Zeichenketten, so hängt der +Operator diese zu einem einzigen String zusammen.
Logische Operatoren
Logische Operatoren verknüpfen eine oder zwei Eingangsvariablen nach den jeweiligen logischen Verknüpfungsregeln.
Sowohl die Eingänge als auch die Ausgänge sind Boole’sche Werte (true oder false).
Operator | Operation |
---|---|
not | Negation |
and | logisches und |
or | logisches oder |
xor | exklusives oder |
Vergleichsoperatoren
Mit Vergleichsoperatoren können jeweils typ-gleiche Operanden verglichen werden. Als Ergebnis wird ein logischer Wert zurückgeliefert (true oder false).
Operator | Operation |
---|---|
= | gleich |
<> | ungleich |
< | kleiner |
<= | kleiner gleich |
> | größer |
>= | größer gleich |
Rangfolge von Operatoren
Wenn man einen komplizierten arithmetischen oder logischen Ausdruck auswertet, hängt das Ergebnis von der Reihenfolge der Anwendung der einzelnen Operatoren ab. Die Reihenfolge kann man gezielt durch Einsatz von Klammern kontrollieren.
Stufe 1 (höchste Präzedenz): Unäre Operatoren | |
---|---|
@ | Adresse einer Variablen oder Funktion (liefert einen Pointer zurück) |
not | logische oder bitweise Negation |
Stufe 2: Multiplikative und bitweise Operatoren | |
* | Multiplikation; Schnittmenge |
/ | Gleitkommadivision |
div | Ganzzahlige Division |
mod | Modulo (Rest einer Integer-Division) |
as | Typumwandlung (typecast) |
and | logisches oder bitweises UND |
shl | bitweise Verschiebung nach links |
shr | bitweise Verschiebung nach rechts |
Stufe 3: Additive Operatoren | |
+ | Addition, Vereinigungsmenge, String-Verkettung |
– | Subtraktion, Differenzmenge |
or | logisches oder bitweises ODER |
xor | logisches oder bitweises Exklusiv-ODER |
Stufe 4 (niedrigste Präzedenz): Vergleichsoperatoren | |
= | Test auf Gleichheit |
<> | Ungleichheit |
< | kleiner als |
> | größer als |
<= | kleiner oder gleich, oder eine Teilmenge einer Menge |
>= | größer oder gleich, oder eine Obermenge einer Menge |
in | Test ob ein Wert Element einer Menge ist |
is | Test ob ein Objekt typkompatibel ist |