Vorzeichen in Python
Das Zeichen »-« wird „Minus(zeichen)“ genannt.
In dieser Lektion wird vorausgesetzt, daß der Leser den Begriff des negativen Vorzeichens und der negativen Zahl bereits kennt. Die Schreibweise „–65“ ist dem Leser ja wahrscheinlich aus der Schule und/oder dem Alltag auch schon bekannt.
Einführendes Beispiel
Vor einen Ausdruck darf ein Vorzeichenoperator geschrieben werden, um das Vorzeichen des Wertes zu ändern (Vorzeichenoperator »-«) oder beizubehalten (Vorzeichenoperator »+«).
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
-2
-2
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
+2
2
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
-2 ** 2
-4
Syntax
Das folgende Syntaxdiagramm zeigt die bisher vorgestellten Operatoren in Reihenfolge abnehmender Priorität.
- Syntaxdiagramm (vereinfacht)
Ausdruck
.---------.
--->| Literal |--->
'---------'Ausdruck
.-. .----------. .-.
--->( ( )--->| Ausdruck |--->( ) )--->
'-' '----------' '-'Ausdruck
.----------. .--. .----------.
--->| Ausdruck |--->( ** )--->| Ausdruck |--->
'----------' '--' '----------'Ausdruck
.-. .----------.
---.--->( - )---.--->| Ausdruck |--->
| '-' | '----------'
| .-. |
'--->( + )---'
'-'
Priorität
Die Priorität der Potenzierung ist größer als die eines vor der Potenz stehenden Vorzeichenoperators.
In »- 2**2« ist die gesamte Potenz Operand des Vorzeichenoperators.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
- 2**2
-4
Der linke Operand einer Potenzierung kann daher kein Vorzeichenausdruck sein.
Der rechte Operand einer Potenzierung darf jedoch ein Vorzeichenausdruck sein.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
2 ** -2
0.25
(In »2 ** -2« ist der Vorzeichenausdruck »-2« der rechte Operand des Potenzierungsoperators. Man könnte dies so interpretieren, daß nun der Vorzeichenoperator eine höhere Priorität hat. Das zeigt, daß die Zuordnung von Prioritäten nicht immer alle Aspekte der Syntax darstellen kann, hierfür wären die nicht-vereinfachen Syntaxdiagramme notwendig. Jedoch führt dies hier kaum zu Mißverständnissen, da »2**-2« sinnvollerweise nicht anders interpretiert werden kann also wie in Python.)
Typanforderungen
Der Operand muß numerischen Typ haben.
Typregeln
Der Typ eines Vorzeichenwechsels ist »int« bei Operanden des Typs »int« und »bool«, er ist »float« bei Operanden des Typs »float«.
Semantik
Die Vorzeichenoperatoren wandeln den Typ von bool-Werten nach »int« und lassen den Typ anderer Werte unverändert.
Der Operator »-« multipliziert den Operandenwert mit «-1».
Der Operator »+« läßt den Operandenwert (abgesehen von einer eventuellen Typwandlung) unverändert.
Der Operator »-« steht vor seinem Operanden. Ein unärer Operator, der vor seinem Operanden steht, wird Präfixoperator genannt.
Anmerkungen
Das Potenzieren mit einem negativen Exponenten ergibt im allgemeinen einen float-Wert, auch wenn beide Operanden den Typ »int« haben.
- Eingabe eines Ausdrucks und Ausgabe einer Textdarstellung seines Wertes
2 ** -2
0.25
Das Potenzieren von 0.0 mit einer negativen Zahl führt zu einer Fehlermeldung.
- Eingabe eines Ausdrucks und Ausgabe einer Fehlermeldung
0.0 ** -1
ZeroDivisionError: 0.0 cannot be raised to a negative power