Numlex Dokumentation
Syntaxreferenz
Problem melden

Operatoren & Logik

Vollständige Rangfolge, Arithmetik, Vergleiche, boolesche Logik (echte Kurzschlussregeln) und exakte Bit-Regeln.

Jeder Ausdruck in Numlex wird von einer einzigen strengen Operatorgrammatik ausgewertet: eine Rangfolgeleiter für Arithmetik und Logik, echte boolesche Werte (nie eine Umwandlung zu 1/0) und separate exakte Regeln für Bit-Arbeit.

Diese Seite ist die vollständige Operatorreferenz: Rangfolge von if/then/else bis zu den Nachstellungsoperatoren, die Bedeutung jedes Operators, genau wo die Sprache kurzschließt (&& bei falscher linker Seite — und nirgends sonst), sowie die Rangfolgetabelle für exakte Ganzzahlen, geprüfte Verschiebungen und Überlaufverhalten.

Rangfolge

Von niedrig nach hoch:

if … then … else …     (right-associative)
or  /  ||
and /  &&
not /  !
==  !=
<  <=  >  >=
+  −                   (left)
*  ×  /  ÷             (left; `of` after a percent or multiplier is this level)
^                      (power, right)
unary + / −
primary                (literals, parentheses, calls, % and x postfixes)

Operatoren

OperatorBedeutungHinweise
+ −Addition / Subtraktionin additivem Kontext ist ein rechts stehendes „reines” Prozent ein Anteil der aufgelaufenen linken Seite: 100 + 10% = 110
* × / ÷Multiplikation / Division200 × 10% = 20, 200 / 10% = 2000
^Potenznie XOR (XOR ist das Wort xor im Ganzzahlpfad)
% (Nachstellung)p% = p/100semantisches „Prozent” in additivem Kontext
x (Nachstellung)1.5x = Multiplikator 1.5wird nur erkannt, wenn keine Variable x aktiv ist
of (Infix, *-Ebene)15% of 490 = 73.5die linke Seite muss ein Prozent oder ein Multiplikator sein (1.5x): 1.5x of 20 = 30, Ketten 10% of 20% of 50 = 1; 3 of 4 ist ein Fehler. In Prozentzeilen ist die Basis von N% of E der Rest der Zeile: 15% of 490 + 5 = 74.25
< <= > >=Vergleichenumerisch; das Ergebnis ist boolesch
== !=Gleichheit / Ungleichheitboolesches Ergebnis
and &&Konjunktion&& schließt nur bei falscher linker Seite kurz: false && (1/0 > 0) = false; true && … und das Wort and werten den rechten Operanden immer aus
or ||Disjunktionschließt nicht kurz: beide Operanden werden ausgewertet — false or (1/0 > 0) und false || (1/0 > 0) sind Division-durch-Null-Fehler
not !NegationPräfix
if a then b else cBedingungniedrigste Rangfolge; die Zweige sind vollständige Ausdrücke; else ist Pflicht

Mehr zu den Prozent- und Multiplikatorformen unter Prozente.

Boolesche Werte sind ein echter Typ

true und false werden nie zu 1/0 umgewandelt. Ein boolescher Wert und eine Zahl in einem Operator sind ein Fehler.

Glyphen gegenüber Wörtern

  • Die Glyphen & und | sind immer bitweise: Mit booleschen Operanden sind sie ein Fehler (false | (1/0 > 0) → „Invalid expression”).
  • Nur die Wörter and/or sind kontextuell: Zwei Ganzzahlen machen sie bitweise, zwei boolesche Werte logisch.

Exakte Ganzzahlen und Bit-Operatoren

Der exakte Ganzzahlmodus wird aktiviert durch:

  • Stark: Literale 0x… / 0b… / 0o…, die Aufrufe int( bin( oct( hex(, die Phrasen … as|in <base> / … to base N, die Bit-Glyphen & | << >> und das Wort xor. Glyphen zählen nur, wenn die Zeile mathematischen Inhalt hat — fish & chips bleibt Prosa.
  • Schwach: das Wort and/or, wenn beide Seiten Ganzzahlen sind.

Rangfolge für exakte Ganzzahlen, von niedrig nach hoch:

if/then/else  →  ||  →  &&  →  | / or  →  xor  →  & / and
→  comparisons == != < <= > >=  →  shifts << >>  →  + -  →  * / %  →  ^
→  unary  →  primaries
OperatorBedeutungHinweise
&bitweises UND
|bitweises ODERdie Glyphe ist immer bitweise: boolesche Operanden sind ein Fehler (false | (1/0 > 0))
xorbitweises XOR (Wort)6 xor 3 = 5
<<LinksverschiebungVerschiebung 0…63; Überlauf ist ein Fehler
>>RechtsverschiebungVerschiebung 0…63; arithmetisch für negative Werte
/Ganzzahldivisiondas Ergebnis ist eine Dezimalzahl, wenn ein Rest bleibt
%Rest
^PotenzExponent wird geprüft; ein negativer Exponent erzeugt eine Dezimalzahl

Alle Werte hier sind exakte Ganzzahlen: 0x7FFFFFFFFFFFFFFF = 9223372036854775807. Überlauf ist ein sichtbarer Fehler — nie ein Wraparound, nie eine still gerundete Zahl. Division mit Rest, ein negativer Exponent und nicht ganzzahlige Werte „verlassen” die exakten Ganzzahlen, daher solltest du an Grenzen ausdrückliche Klammern setzen.

Die literalen Formen und Basisnamen stehen unter Zahlen & Ganzzahlbasen.

Verwandt

Einen Fehler in dieser Dokumentation gefunden? Auf GitHub melden