Operatorassoziativität

Operatorassoziativitä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, das heißt, dass für ihn das Assoziativgesetz (a ∘ b) ∘ c = a ∘ (b ∘ 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 hängt das Ergebnis von der Operatorassoziativität ab. Um zu vermeiden, dass Ausdrücke mit nebeneinander stehenden, gleichwertigen Operatoren ohne Klammerung mehrdeutig sind, wird eine Assoziativität 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, das heißt 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), das heißt 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.

In Programmiersprachen, die Seiteneffekte in Ausdrücken erlauben, ist die Reihenfolge, in der diese Seiteneffekte ausgeführt/wirksam werden, von Bedeutung. Einige Programmiersprachen legen diese Auswertungsreihenfolge strikt fest, andere (wie z.B. C oder C++) lassen die Auswertungsreihenfolge bei den meisten Infix-Operanden undefiniert. Beispiel:

int f1(void); 
int f2(void);
int f3(void);
int g(int);  
 
int h(void) {
  return g( f1() - f2() - f3());
}
Es ist nicht definiert, ob zuerst f1, f2 oder f3 ausgeführt werden (und damit ihre Seiteneffekte wirksam werden). Dagegen ist festgeschrieben, dass g erst aufgerufen wird, nachdem f1, f2 und f3 (mit ihren Seiteneffekten) beendet sind. Das Argument von g ist identisch zu (f1()-f2()) - f3().

Siehe auch


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Linksassoziativer Operator — Operatorassoziativität bezeichnet vor allem in der Informatik, aber auch in Mathematik und Logik: im engeren Sinn die Eigenschaft eines Operators, dass die Reihenfolge, mit der mehrere Vorkommnisse dieses Operators in einem Ausdruck ausgewertet… …   Deutsch Wikipedia

  • Linksassoziativität — Operatorassoziativität bezeichnet vor allem in der Informatik, aber auch in Mathematik und Logik: im engeren Sinn die Eigenschaft eines Operators, dass die Reihenfolge, mit der mehrere Vorkommnisse dieses Operators in einem Ausdruck ausgewertet… …   Deutsch Wikipedia

  • Rechtsassoziativität — Operatorassoziativität bezeichnet vor allem in der Informatik, aber auch in Mathematik und Logik: im engeren Sinn die Eigenschaft eines Operators, dass die Reihenfolge, mit der mehrere Vorkommnisse dieses Operators in einem Ausdruck ausgewertet… …   Deutsch Wikipedia

  • Infix-Notation — Die allgemein gebräuchliche Schreibweise von Rechenoperationen und formalen logischen Ausdrücken wird als Infixnotation bezeichnet, da sie die Operatoren zwischen die Operanden setzt. Zum Beispiel: 1 + 2 · 8 ÷ 12 Allerdings kann diese Darstellung …   Deutsch Wikipedia

  • Assolziativität — Das Assoziativgesetz (lat. associare vereinigen, verbinden, verknüpfen, vernetzen), auf Deutsch Verknüpfungsgesetz oder auch Verbindungsgesetz, ist eine Regel aus der Mathematik. Eine (zweistellige) Verknüpfung ist assoziativ, wenn die… …   Deutsch Wikipedia

  • Assoziativ-Gesetz — Das Assoziativgesetz (lat. associare vereinigen, verbinden, verknüpfen, vernetzen), auf Deutsch Verknüpfungsgesetz oder auch Verbindungsgesetz, ist eine Regel aus der Mathematik. Eine (zweistellige) Verknüpfung ist assoziativ, wenn die… …   Deutsch Wikipedia

  • Assoziative Verknüpfung — Das Assoziativgesetz (lat. associare vereinigen, verbinden, verknüpfen, vernetzen), auf Deutsch Verknüpfungsgesetz oder auch Verbindungsgesetz, ist eine Regel aus der Mathematik. Eine (zweistellige) Verknüpfung ist assoziativ, wenn die… …   Deutsch Wikipedia

  • Assoziativität — Das Assoziativgesetz (lat. associare vereinigen, verbinden, verknüpfen, vernetzen), auf Deutsch Verknüpfungsgesetz oder auch Verbindungsgesetz, ist eine Regel aus der Mathematik. Eine (zweistellige) Verknüpfung ist assoziativ, wenn die… …   Deutsch Wikipedia

  • Mathematische Notation — Als Notation bezeichnet man in Mathematik, Logik und Informatik die Schreibweise von Formeln und Ausdrücken mittels mathematischer Symbole. Die mathematische Notation entspricht einer Sprache, die formaler ist als viele natürliche Sprachen und… …   Deutsch Wikipedia

  • Punkt- vor Strichrechnung — ist eine Konvention in der Operatorrangfolge der Mathematik und besagt, dass Multiplikationen und Divisionen vor Additionen und Subtraktionen durchzuführen sind. Durch diese Konvention können in vielen Ausdrücken Klammern zu Gunsten der… …   Deutsch Wikipedia

Share the article and excerpts

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