Der Epina Delphi-Kurs bietet Ihnen eine allgemeine Einführung in das Programmieren mit Delphi/Pascal. Mit vielen ausgearbeiteten Beispielen können Sie direkt in die Delphi-Programmierung einsteigen. Mehr dazu finden Sie hier....

Operatoren

Die SDL Component Suite bietet eine riesige Menge an Komponenten und Routinen, die viele schwierige Anforderungen auf Knopfdruck lösen. Die Light-Version ist gratis!

Arithmetische Operatoren

Arithmetische Operatoren verknüpfen zwei Werte (in Form von Konstanten oder Variablen) und liefern das entsprechende Resultat 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: Der Plus-Operator (+) hat für Strings noch eine eigene Bedeutung: sind beide Variablen Zeichenketten, so hängt der +Operator diese zu einem 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

Hinweis: Logische Operatoren lassen sich auch auf ganze Zahlen anwenden. In diesem Fall werden sämtliche Bits jeweils einzeln der logischen Verknüpfung unterworfen.

 

Vergleichsoperatoren

Mit Vergleichsoperatoren können jeweils typ-gleiche Operanden verglichen werden. Als Ergebnis wird ein logischer Wert zurückgeliefert (true oder false). Vergleichsoperatoren können nicht nur auf numerische Werte angewendet werden, sondern auch auf logische Werte und auf Zeichen und Strings. Beim Vergleich von Zeichen wird die zugrundeliegende Codierung als Basis des Vergleichs herangezogen.

Operator Operation
= gleich
<> ungleich
< kleiner
<= kleiner gleich
> größer
>= größer gleich

Hinweis: Die Anwendung von '=' und '<>' auf reelle Zahlen ist zwar prinzipiell erlaubt, allerdings kaum sinnvoll, da reelle Zahlen meist Rundungsfehler in der letzten signifikanten Stelle aufweisen. Dies führt dazu, dass ein Vergleich die falschen Ergebnisse liefert. So setzt das Statement test := (0.001*100000 = 100); die boole'sche Variable test nicht auf TRUE, obwohl die beiden Werte mathematisch gesehen gleich sind (der linke Ausdruck 0.001*100000 ergibt bei doppelter Genauigkeit 100.0000000000000021).

 

Präzedenz (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. Setzt man keine Klammern, so ergibt sich eine Default-Einstellung, die als Operator-Präzedenz bezeichnet wird. Grundsätzlich gilt hier, dass Vorzeichen und Negation vor Multiplikation und Division berechnet werden; diese kommen wiederum vor Addition und Subtraktion, und zum Schluss werden erst die Vergleichsoperatoren ausgewertet.

Persönl. Anmerkung: Es ist keine Schande und kostet auch keine Rechenzeit, wenn man mehr Klammern als nötig setzt. Ich tendiere dazu, eher mehr Klammern als notwendig zu setzen; dies gilt vor allem für komplizierte logische Ausdrücke, für die ein paar Klammern mehr eventuell Stunden an Fehlersuche ersparen können.

 

Eine detailierte Aufstellung der Operatoren und ihre Rangfolge gibt folgende Tabelle:

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

Last Update: 2008-09-09