Mathematical operators

For the sake of simplicity, the Nummer and Kommazahl types are grouped together as Numeric in this article.

To make finding a specific operator easier for readers who already know a programming language the C operator is included in this and later tables.

Unary operators

FunctionUsageC equivalentType of operandreturn typeExampleResult
NOT gatelogisch nicht a~aZahlZahllogisch nicht 1-2
list/Text/Character countdie Länge von a-Liste, TextZahlDie Länge von "Hallo"5
Byte Sizedie Größe von asizeof(a)allZahlDie Größe von 18
Absolute valueder Betrag von aabs(a)numericnumericder Betrag von -55

Binary operators

FunctionUsageC equivalentType of 1st operandType of 2nd operandreturn typeExampleResult
Additiona plus ba + bnumericnumericnumeric1 plus 12
Subtractiona minus ba - bnumericnumericnumeric1 minus 2-1
Multiplicationa mal ba * bnumericnumericnumeric5 mal 315
Divisiona durch ba / bnumericnumericKommazahl6 durch 23
Remaindera modulo ba % bZahlZahlZahl16 modulo 124
Exponentiationa hoch bpow(a, b)numericnumericKommazahl2 hoch 8256
Rootdie a. Wurzel von bpow(a, 1/b)numericnumericKommazahldie 2. Wurzel von 93
Logarithmder Logarithmus von b zur Basis alog10(b) / log10(a)numericnumericKommazahlder Logarithmus von 100 zur Basis 102
Left Bit-Shifta um b Bit nach links verschobena << bZahlZahlZahl7 um 3 Bit nach links verschoben56
Right Bit-Shifta um b Bit nach rechts verschobena >> bZahlZahlZahl70 um 2 Bit nach rechts verschoben17
AND gatea logisch und ba&bZahlZahlZahl5 logisch und 20
OR gatea logisch oder ba| bZahlZahlZahl5 logisch oder 27
XOR gatea logisch kontra ba^bZahlZahlZahl8 logisch kontra 513

Boolean operators

With the help of Boolean operators, complex conditions can be expressed and summarized and for example used for branches or loops.

OperatorDescriptionC equivalentExampleResult
undTrue if both arguments are true.true && falsewahr und wahr
wahr und falsch
falsch und wahr
falsch und falsch
wahr
falsch
falsch
falsch
oderTrue if either argument is true.true || falsewahr oder wahr
wahr oder falsch
falsch oder wahr
falsch oder falsch
wahr
wahr
wahr
falsch
nichtThe value of the argument is reversed.!truenicht wahr
nicht falsch
falsch
wahr

Comparison operators

OperatorDescriptionC equivalentExampleResult
gleichTrue if both arguments have the same value.1 == 11 gleich 1 ist
1 gleich 2 ist
wahr
falsch
ungleichTrue if the two arguments have different values.1 != 11 ungleich 1 ist
1 ungleich 2 ist
wahr
falsch
kleiner alsTrue if the left argument has a smaller value than the right.5 < 105 kleiner als 10 ist
30 kleiner als 15 ist
wahr
falsch
größer alsTrue if the left argument has a greater value than the right.7 > 37 größer als 3 ist
5 größer als 8 ist
wahr
falsch
kleiner als, oderTrue if the left argument is less than or the same value as the right.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, oderTrue if the left argument is greater than or the same value as the right.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

Relational operators all have an “ist” at the end to conform to the grammar in any context.

List and text operators

FunctionUsageC equivalentType of 1st operandType of 2nd operandType of 3rd operandreturn typeExampleResult
Concationationa verkettet mit b-Text/Liste/BuchstabeText/Liste/Buchstabe-Text/Liste"Hallo" verkettet mit " Welt""Hallo Welt"
Indexinga an der Stelle ba[b]Text/ListeZahl-Buchstabe/Element Typ"Hallo" an der Stelle 1‘H’
Rangea 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”

Remarks

The operand types of a chain cannot be combined in any way.

With indices and von ... bis the indices are always inclusive and start with 1. So a list from 1 to 5 is the first, the fifth and everything in between. A list at position 0 would be a run-time error, as would an index that exceeds the length of the list.

With von ... bis there are no runtime errors if indices are too small or too large. The indices are automatically brought into the range [1, length of the list/text]. If the 2nd index is then smaller than the 1st, there is a runtime error. So if both indices are greater than the length of the list, the result is the last element of the list.

Examples

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]

Operator prioritization

Different operators are prioritized differently. This means that some operators take precedence over others when evaluated. For example, in mathematics, multiplication and division take precedence over addition and subtraction, and Powers take precedence over multiplication and division. With the mathematical operators, DDP largely adheres to the mathematical order. Here is a table with all operators and their prioritization (high priority operators above):

RankOperator
1Function call
2Literals, Constants
3Grouping
4Type conversions
5Field access on Combinations
6Indexing
7von ... bis, ab ... dem, bis ... zum
8Exponentiation, Root, Logarithm
9Negation,
10Absolute Value, Size, Length, NOT Gate
11Multiplication, Division, Modulo
12Addition, Subtraction, Concatination
13Bit-Shifting
14Comparison (kleiner, größer, ect.)
15Equivalence (gleich und ungleich)
16Logical AND Gate
17Logical XOR Gate
18Logical OR Gate
19Boolean AND
20Boolean OR

Operator prioritization example

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

Here you can see the prioritization of the an der Stelle operator over the hoch operator. First z an der Stelle 2 and then the result is raised to the power of 3. If the hoch operator took precedence over an der Stelle, 2 hoch 3 would be calculated first and then uses the element at position 8 of z, which would result in a runtime error because z has only 3 elements.