Linksassoziativität

Linksassoziativität

Operatorassoziativität bezeichnet vor allem in der Informatik, aber auch in Mathematik und Logik:

  1. im engeren Sinn die Eigenschaft eines Operators, dass die Reihenfolge, mit der mehrere Vorkommnisse dieses Operators in einem Ausdruck ausgewertet werden, keinen Einfluss auf das Ergebnis der Auswertung hat, d.h. dass für ihn das Assoziativgesetz (a op b) op c = a op (b op c) gilt;
  2. im weiteren Sinn die Festlegung, auf welche Weise ein nicht im engeren Sinn assoziativer Operator ausgewertet werden soll.

Zum Beispiel sind in der Mathematik die Addition und Multiplikation assoziative Operatoren, weil (a + b) + c = a + (b + c) und (a * b) * c = a * (b * c) ist. In der Logik sind zum Beispiel Konjunktion und Disjunktion assoziativ, weil einerseits (a \and b) \and c und a \and (b \and c) und andererseits (a \or b) \or c und a \or (b \or c) äquivalent sind. Nicht assoziativ sind zum Beispiel Division und Konditional, weil im Allgemeinen (a:b):c \neq a:(b:c) ist und weil (P \rightarrow Q) \rightarrow R und P \rightarrow (Q \rightarrow R) nicht äquivalent sind.

Erst bei nicht assoziativen Verknüpfungen kann das Ergebnis von der Auswertungsreihenfolge abhängen. Um zu vermeiden, dass Ausdrücke mit nebeneinander stehenden, gleichwertigen Operatoren ohne Klammerung mehrdeutig sind, wird oftmals eine Auswertungsrichtung per Konvention festgelegt:

  • Ein Linksassoziativer Operator wird von links nach rechts ausgewertet.
    • Ein Beispiel ist die Subtraktion: Es ist abc = (ab) − c.
    • Das Konditional in der Logik wird von den meisten Autoren linksassoziativ verwendet, d.h. dass P \rightarrow Q \rightarrow R als (P \rightarrow Q) \rightarrow R zu lesen ist.
  • Ein Rechtsassoziativer Operator wird von rechts nach links ausgewertet. Beispiele hierfür:
    • Die Potenzierung in der Mathematik: a^{b^c} = a^{(b^c)}
    • Der Zuweisungsoperator verschiedener Programmiersprachen wie beispielsweise C:
      a = b = c ist gleichbedeutend mit a = (b = c), d.h. der Variablen b wird zunächst der Wert von c zugewiesen und das Ergebnis dieser Zuweisung (das gleich dem zugewiesenen Wert ist) anschließend a zugewiesen. Diese Auswertungsmethode zu kennen, ist u.A. dann wichtig, wenn c der NULL-Pointer ist, da in diesem Fall Die Anweisung a=b=NULL; von a=NULL;b=NULL; verschieden ist hinsichtlich der auftretenden Zeigertypen.

Siehe auch: Operatorrangfolge


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”