Die Assoziativitätsrichtung von Operatoren in C
Syntax
Wir hatten die Syntax von Multiplikativausdrücken bisher vereinfacht. Tatsächlich muß der erste Operand eines Multiplikativausdruck nicht unbedingt ein Vorzeichenausdruck sein, er darf auch ein weiterer Multiplikativausdruck sein.
- Syntax (Syntaxdiagramm)
Primaerausdruck
.----------.
---.------------>| Literal |------------.--->
| '----------' |
| .-. .----------. .-. |
'--->( ( )--->| Ausdruck |--->( ) )---'
'-' '----------' '-'Vorzeichenausdruck
.--------------------.
---.------------>| Primaerausdruck |----.---->
| '--------------------' ^
| .-. .--------------------. |
'--->( - )--->| Vorzeichenausdruck |----'
| '-' '--------------------' |
| .-. .--------------------. |
'--->( + )--->| Vorzeichenausdruck |----'
'-' '--------------------'Multiplikativausdruck
.-----------------------.
---.--->| Vorzeichenausdruck |--------------------------------------.--->
| '-----------------------' ^
| .-----------------------. .-. .--------------------. |
'--->| Multiplikativausdruck |--->( * )--->| Vorzeichenausdruck |---'
| '-----------------------' '-' '--------------------' |
| .-----------------------. .-. .--------------------. |
'--->| Multiplikativausdruck |--->( / )--->| Vorzeichenausdruck |---'
'-----------------------' '-' '--------------------'Ausdruck
.------------------------.
--->| Multiplikativausdruck |--->
'------------------------'- N2176 6.5.5 Multiplicative operators (gekürzt)
- Syntax
1 multiplicative-expression:
cast-expression
multiplicative-expression * cast-expression
multiplicative-expression / cast-expression
Übungsfragen
? Übungsfrage
Für die Beantwortung der folgenden Übungsfragen soll das oben stehende Syntaxdiagramm zugrundegelegt werden.
Welches der beiden Multiplikationszeichen im Ausdruck »2*3*4« befindet sich in einem Operanden?
Welches der Multiplikationszeichen im Ausdruck »1*2*3*4« befindet sich nicht in einem Operanden?
? Übungsfrage
Welche Typen und Werte haben die folgenden Ausdrücke jeweils?
- A »8 / 2 / 2«
- B »8 /( 2 / 4. )«
- C »2 / 8 / 4.«
? Operanden und Operatoren ⃗
Wie viele Operanden hat der erste Divisionsoperator »/« in dem Ausdruck »8 / 4 / 2«? Was sind diese Operanden? (Nicht die Werte der Operanden sind hier gesucht, sondern die Operandenausdrücke.)
Wie viele Operanden hat der zweite Divisionsoperator »/« in dem Ausdruck »8 / 4 / 2«? Was sind diese Operanden? (Nicht die Werte der Operanden sind hier gesucht, sondern die Operandenausdrücke.)
Ist »8 / 4« ein Operand in »8 / 4 / 2«?
Ist »4 / 2« ein Operand in »8 / 4 / 2«?
? Verständnis von Fachbegriffen (1) ⃗
Zu einem (hypothetischen) binären Infixoperator »∘« wird erklärt: „Der Wert eines Ausdrucks, der aus dem Operator »∘« sowie einem zu diesem Operator gehörenden linken und rechten Operanden besteht, ist der Wert des linken Operanden.“.
(Kürzere Formulierung der Erklärung: „Der Wert des Operators »∘« ist der Wert seines linken Operanden.“.)
Welchen Wert hat demnach »4 ∘ 7«?
Welchen Wert hat »4 ∘ 2 ∘ 7«?
/ Übungsaufgabe ⃗
Schreiben Sie eine Inkarnation der Kategorie »Multiplikativausdruck« des folgenden Syntaxdiagramms mit dem Multiplikativausdruck »2 / 3« und dem Vorzeichenausdruck »4« (in dieser Reihenfolge).
- Syntax (Syntaxdiagramm)
Multiplikativausdruck
.-----------------------. .-. .--------------------.
--->| Multiplikativausdruck |--->( / )--->| Vorzeichenausdruck |--->
'-----------------------' '-' '--------------------'
Die Lösung soll auf einer von Leerzeilen umgebenden Zeile für sich alleine stehen