Mathematische Operatoren

Zur Vereinfachung werden in diesem Artikel die Typen Zahl und Kommazahl als Numerisch zusammengefasst.

Um das Finden eines bestimmten Operators für Leser, die bereits eine Programmiersprache beherrschen einfacher zu machen ist in diesen und späteren Tabellen jeweils der C-Operator dabei.

Unäre Operatoren

FunktionVerwendungC EquivalentTyp vom OperandenRückgabetypBeispielErgebnis
Logische NICHT verknüpfunglogisch nicht a~aZahlZahllogisch nicht 1-2
Listen/Text Element/Buchstaben Anzahldie Länge von a-Liste, TextZahlDie Länge von "Hallo"5
Byte Größedie Größe von einem/einer <Typname>sizeof(a)TypenameZahlDie Größe von einer Zahl8
Standardwertder Standardwert von einem/einer <Typname>-Typenamepassend zum TypnamenDer Standardwert von einer Zahl0
Betragder Betrag von aabs(a)numerischnumerischDer Betrag von -55

Binäre Operatoren

FunktionVerwendungC EquivalentTyp vom 1. OperandTyp vom 2. OperandRückgabetypBeispielErgebnis
Additiona plus ba + bnumerischnumerischnumerisch1 plus 12
Subtraktiona minus ba - bnumerischnumerischnumerisch1 minus 2-1
Multiplikationa mal ba * bnumerischnumerischnumerisch5 mal 315
Divisiona durch ba / bnumerischnumerischKommazahl6 durch 23,0
Resta modulo ba % bZahlZahlZahl16 modulo 124
Potenzierena hoch bpow(a, b)numerischnumerischKommazahl2 hoch 8256,0
Wurzelziehendie a. Wurzel von bpow(a, 1/b)numerischnumerischKommazahldie 2. Wurzel von 93,0
Logarithmusder Logarithmus von b zur Basis alog10(b) / log10(a)numerischnumerischKommazahlder Logarithmus von 100 zur Basis 102,0
Bit-Verschiebung nach linksa um b Bit nach links verschobena << bZahlZahlZahl7 um 3 Bit nach links verschoben56
Bit-Verschiebung nach rechtsa um b Bit nach rechts verschobena >> bZahlZahlZahl70 um 2 Bit nach rechts verschoben17
Logische UND verknüpfunga logisch und ba&bZahlZahlZahl5 logisch und 20
Logische ODER verknüpfunga logisch oder ba| bZahlZahlZahl5 logisch oder 27
Logische XOR verknüpfunga logisch kontra ba^bZahlZahlZahl8 logisch kontra 513

Bool’sche Operatoren

Mithilfe von Bool’schen Operatoren können komplexe Bedingungen ausgedrückt und zusammengefasst werden und z.B. für Verzweigungen oder Schleifen verwendet werden.

OperatorBeschreibungC EquivalentBeispielErgebnis
undWahr, wenn beide Argumente wahr sind.true && falsewahr und wahr
wahr und falsch
falsch und wahr
falsch und falsch
wahr
falsch
falsch
falsch
oderWahr, wenn eines der beiden Argumente wahr ist.true || falsewahr oder wahr
wahr oder falsch
falsch oder wahr
falsch oder falsch
wahr
wahr
wahr
falsch
entweder ... oderWahr, wenn nur eines der beiden Argumente wahr ist.true != falseentweder wahr oder wahr
entweder wahr oder falsch
entweder falsch oder wahr
entweder falsch oder falsch
falsch
wahr
wahr
falsch
nichtDer Wert des Arguments wird umgekehrt.!truenicht wahr
nicht falsch
falsch
wahr

Vergleichsoperatoren

OperatorBeschreibungC EquivalentBeispielErgebnis
gleichWahr, wenn beide Argumente den gleichen Wert haben.1 == 11 gleich 1 ist
1 gleich 2 ist
wahr
falsch
ungleichWahr, wenn die beiden Argumente verschiedene Werte haben.1 != 11 ungleich 1 ist
1 ungleich 2 ist
wahr
falsch
kleiner alsWahr, wenn das Linke Argument einen kleineren Wert als das Rechte hat.5 < 105 kleiner als 10 ist
30 kleiner als 15 ist
wahr
falsch
größer alsWahr, wenn das Linke Argument einen größeren Wert als das Rechte hat.7 > 37 größer als 3 ist
5 größer als 8 ist
wahr
falsch
kleiner als, oderWahr, wenn das Linke Argument einen kleineren oder denselben Wert wie das Rechte hat.5 <= 105 kleiner als, oder 10 ist
30 kleiner als, oder 15 ist
5 kleiner als, oder 5 ist
wahr
falsch
wahr
größer als, oderWahr, wenn das Linke Argument einen größeren oder denselben Wert wie das Rechte hat.7 >= 37 größer als, oder 3 ist
5 größer als, oder 8 ist
5 größer als, oder 5 ist
wahr
falsch
wahr
zwischenWahr, wenn das Linke Argument zwischen den beiden Rechten liegt.(4 < 5 && 4 > 3)4 zwischen 3 und 5 istwahr
falsch

Vergleichsoperatoren haben alle ein “ist” am Ende um der Grammatik in jedem Kontext gerecht zu werden. Falls das zu mehreren “ist"s hintereinander führen sollte reicht ein einziges aus:

2 größer als 2 ist gleich 4 größer als 4 ist ist. [hässlich]
2 größer als 2 ist gleich 4 größer als 4 ist. [schön]

Listen und Text Operatoren

FunktionVerwendungC EquivalentTyp vom 1. OperandenTyp vom 2. OperandenTyp vom 3. OperandenRückgabetypBeispielErgebnis
Verkettunga verkettet mit b-Text/Liste/BuchstabeText/Liste/Buchstabe-Text/Liste"Hallo" verkettet mit " Welt""Hallo Welt"
Indizierunga an der Stelle ba[b]Text/ListeZahl-Buchstabe/Element Typ"Hallo" an der Stelle 1‘H’
Bereicha im Bereich von b bis c-Text/ListeZahlZahlText/Liste"Hallo Welt" im Bereich von 1 bis 5“Hallo”
... ab dem ...a ab dem b. Element-Text/ListeZahl-Text/Liste"Hallo Welt" ab dem 7. Element“Welt”
... bis zum ...a bis zum b. Element-Text/ListeZahl-Text/Liste"Hallo Welt" bis zum 5. Element“Hallo”

Bemerkungen

Die Operanden Typen einer Verkettung können nicht beliebig kombiniert werden.

Bei Indizierungen und im Bereich von ... bis sind die Indizes immer inklusiv und fangen bei 1 an. Eine Liste von 1 bis 5 sind also das erste, das fünfte und alle Element dazwischen. Eine Liste an der Stelle 0 wäre ein Laufzeitfehler, genauso wie ein Index, der die Länge der Liste überschreitet.

Bei im Bereich von ... bis gibt es keine Laufzeitfehler bei zu kleinen oder zu großen Indizes. Die Indizes werden automatisch in den Bereich [1, Länge der Liste/Text] gebracht. Sollte danach der 2. Index kleiner als der 1. sein, so gibt es einen Laufzeitfehler. Wenn also beide Indizes größer als die Länge der Liste sind, so ist das Ergebnis also das Letzte Element der Liste.

... ab dem ... und ... bis zum ... sind nur Kurzschreibweisen von im Bereich von ... bis mit dem zweiten bzw. ersten Operanden auf die Länge der Liste bzw. 1 gesetzt ist.

Beispiele

Die Zahlen Liste z ist eine Liste, die aus 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 besteht.
Schreibe (z an der Stelle 5). [Zeigt 5 in der Konsole]
Schreibe (z von 3 bis 7). [Zeigt "3, 4, 5, 6, 7" in der Konsole]
Schreibe (z von 3 bis 7 verkettet mit z von 1 bis 4). [Zeigt "3, 4, 5, 6, 7, 1, 2, 3, 4" in der Konsole]

Schreibe ("Hallo" verkettet mit 'Ü'). [Zeigt "HalloÜ" in der Konsole]
Schreibe ("Hallo" von 1 bis 3 verkettet mit 'ö'). [Zeigt "Halö" in der Konsole]
Schreibe ('b' verkettet mit 'a'). [Zeigt "b, a" in der Konsole]

Falls

Der Falls Operator entspricht dem Ternary Operator (a ? b : c) in anderen Sprachen. Seine Parameter sind ein Wahrheitswert und 2 Ausdrücke beliebigen (aber des gleich) Typs:

Der Text t ist "2 > 3", falls 2 größer als 3 ist, ansonsten "2" verkettet mit " < " verkettet mit "3".

Operator Priorisierung

Verschiedene Operatoren werden verschieden Priorisiert. Das bedeutet, dass manche Operatoren bei der Auswertung Vorrang vor anderen haben. In der Mathematik haben z.B. Multiplikation und Division Vorrang vor Addition und Subtraktion, und Potenzen haben wiederrum Vorrang vor Multiplikationen und Divisionen. Bei den mathemathischen Operatoren hält DDP sich weitestgehend an die mathemathische Reihenfolge. Hier ist eine Tabelle mit allen Operatoren und ihrer Priorisierung (hoch priorisierte Operatoren oben):

RangOperator
1Funktionsaufruf
2Literale, Konstante
3Klammern
4Typkonvertierungen
5Feld Zugriff von Kombinationen
6Indizierung
7von ... bis, ab ... dem, bis ... zum
8Potenzieren, Wurzelziehen, Logarithmus
9Negation,
10Betrag, Größe, Länge, Standardwert, Logisches-/Bool’sches nicht
11Multiplikation, Division, Rest,
12Addition, Subtraktion, Verkettung,
13Bit-Verschiebung
14Größen Vergleich (kleiner, größer, ect.)
15Gleichheit (gleich und ungleich)
16Logische UND Verknüpfung
17Logische XOR Verknüpfung
18Logische ODER Verknüpfung
19Bool’sches UND
20Bool’sches ODER
21entweder ... oder
22Falls

Operator Priorisierung Beispiel

Die Zahlen Liste z ist eine Liste, die aus 1, 2, 3 besteht.
Schreibe (z an der Stelle 2 hoch 3). [Zeigt 8 in der Konsole]

Hier sieht man die Priorisierung des an der Stelle Operators über den hoch Operator. Es wird erst z an der Stelle 2 ausgewertet und dann das Ergebnis mit 3 potenziert. Hätte der hoch Operator Vorrang vor an der Stelle, würde erst 2 hoch 3 ausgerechnet werden und dann das Element an der Stelle 8 von z benutzt, was zu einem Laufzeitfehler führen würde, da z nur 3 Elemente besitzt.