Operatorassoziativität

aus Wikipedia, der freien Enzyklopädie

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

  1. im engeren Sinn die Eigenschaft eines Operators , assoziativ zu sein, also das Assoziativgesetz gilt;
  2. im weiteren Sinn die Festlegung, wie komplexere Ausdrücke mit nicht unbedingt im engeren Sinn assoziativen Operatoren zu lesen sind.

Zum Beispiel sind in der Mathematik die Addition und normale Multiplikation im engeren Sinn assoziative Operatoren, also bzw. , ebenso die Matrixmultiplikation und in der Logik die Konjunktion und Disjunktion .

Bei nicht im engeren Sinn assoziativen Operatoren dagegen hängt das Ergebnis der Auswertung eines Ausdrucks von der per Konvention festgelegten Operatorassoziativität im weiteren Sinn ab: Um zu vermeiden, dass Ausdrücke mit nebeneinander stehenden, gleichwertigen Operatoren ohne Klammerung mehrdeutig sind, wird dabei festgelegt, ob die betreffenden Teilausdrücke implizit links- oder rechtsgeklammert sind.

Linksassoziative Operatoren

Bei linksassoziativer Operatoren wird implizite Linksklammerung vereinbart[1][2][3][4][5] – ein binärer Operator gilt somit als linksassoziativ, wenn die Ausdrücke

etc.

wie gezeigt zu lesen sind. Beispiele für linksassoziative Operationen sind:

      Jedoch: Bei waagerechten Bruchstrichen bindet der kürzere Bruchstrich stärker:

Rechtsassoziative Operatoren

Umgekehrt liegt bei rechtsassoziativen Operatoren implizite Rechtsklammerung vor, so dass gilt:

etc.

Beispiele für rechtsassoziative Operationen sind:[6]

  • Die Potenzierung: , denn wäre einfach .
    Achtung: Taschenrechner werten Eingaben der Form x ^ y ^ z gleichwohl in der Regel linksassoziativ, also so aus, als ob sie in der Form (x ^ y) ^ z eingegeben worden wären – bei Ausdrücken dieser Form muss daher die Rechtsassoziativität der Potenzierung stets mittels eigener Klammersetzung erzwungen werden: x ^ (y ^ z).
  • Die Subjunktion in der Logik wird von den meisten Autoren rechtssassoziativ verwendet, das heißt, dass als zu lesen ist.
  • Der Zuweisungsoperator einiger Programmiersprachen, wie C: x = y = z ist gleichbedeutend mit x = (y = z), das heißt, der Variablen y wird zunächst der Wert von z zugewiesen und erst danach das Ergebnis dieser Zuweisung (also der zugewiesene Wert z) der Variablen x zugewiesen.

Siehe auch

Einzelnachweise