Operatorassoziativität - LinkFang.de





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 [math](a+b)+c=a+(b+c)[/math] und [math](a \cdot b)\cdot c=a \cdot (b \cdot c)[/math] ist. In der Logik sind zum Beispiel Konjunktion und Disjunktion assoziativ, weil einerseits [math](a \and b) \and c[/math] und [math]a \and (b \and c)[/math] und andererseits [math](a \or b) \or c[/math] und [math]a \or (b \or c)[/math] äquivalent sind. Nicht assoziativ sind zum Beispiel Division und Subjunktion, weil im Allgemeinen [math](a:b):c \neq a:(b:c)[/math] ist und weil [math](P \rightarrow Q) \rightarrow R[/math] und [math]P \rightarrow (Q \rightarrow R)[/math] 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 [math]a-b-c = (a-b)-c[/math].
    • Auch die Division ist linksassoziativ: [math]a:b:c = (a:b):c[/math]
    • Das Subjunktion in der Logik wird von den meisten Autoren linksassoziativ verwendet, das heißt, dass [math]P \rightarrow Q \rightarrow R[/math] als [math](P \rightarrow Q) \rightarrow R[/math] zu lesen ist.
  • Ein Rechtsassoziativer Operator wird von rechts nach links ausgewertet. Beispiele hierfür:
    • Die Potenzierung in der Mathematik: [math]a^{b^c} = a^{(b^c)}[/math]
    • Der Zuweisungsoperator verschiedener Programmiersprachen wie beispielsweise C:
      [math]a = b = c[/math] ist gleichbedeutend mit [math]a = (b = c)[/math], das heißt, der Variablen [math]b[/math] wird zunächst der Wert von [math]c[/math] zugewiesen und das Ergebnis dieser Zuweisung (das gleich dem zugewiesenen Wert ist) anschließend [math]a[/math] 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


Kategorien: Keine Kategorien vorhanden!

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Operatorassoziativität (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.