^
(wobei ^
für ``hoch'' steht, 2^4
ergibt also 16).
Selbstverständlich wird dabei die Vorrangregel für Operatoren
(Potenz vor Punkt vor Strich) beachtet, der Ausdruck
2+3*4*5-5*2^2
ergibt also 2+60-20=42.
Letztes Token | Mögliche Tokens |
---|---|
Keines (Anfang des Ausdrucks) | Zahl oder öffnende Klammer |
Operator | Zahl oder öffnende Klammer |
öffnende Klammer | Zahl oder öffnende Klammer |
Zahl | schließende Klammer oder Operator |
schließende Klammer | schließende Klammer oder Operator |
^
die höchste Priorität.
^
.
2+3*4*5-5*2^2
würde wie folgt aussehen:
Gelesenes Token | Zahlenstack | Operatorstack |
---|---|---|
2 | 2 | |
+ | 2 | + |
3 | 2 3 | + |
* | 2 3 | + * |
4 | 2 3 4 | + * |
* | 2 12 | + |
2 12 | + * | |
5 | 2 12 5 | + * |
- | 2 60 | + |
62 | ||
62 | - | |
5 | 62 5 | - |
* | 62 5 | - * |
2 | 62 5 2 | - * |
^ |
62 5 2 | - * ^ |
2 | 62 5 2 2 | - * ^ |
Ende | 62 5 4 | - * |
62 20 | - | |
42 |
^
kann mit Hilfe der C-Funktion pow
implementiert werden. Bitte math.h und beim Übersetzen
die Option -lm nicht vergessen!