Top-Fragen
Zeitleiste
Chat
Kontext
Operatorassoziativität
mehrdeutig verwendeter Begriff Aus Wikipedia, der freien Enzyklopädie
Remove ads
Operatorassoziativität bezeichnet vor allem in der Informatik, aber auch Mathematik und Logik die Festlegung, wie komplexere Ausdrücke mit infix-Operatoren, die für zweistellige Operationen stehen, die nicht unbedingt assoziativ sind, zu lesen sind.
Zum Beispiel sind in der Mathematik die Addition und Multiplikation, die üblicherweise mit bzw. notiert werden, assoziative Operationen, es gilt also bzw. , ebenso wie in der Logik die Konjunktion und Disjunktion . Hier ist es gleichgültig, ob als oder als interpretiert wird.
Bei nicht assoziativen Operationen, wie etwa der Subtraktion (infix notiert durch „–“), gilt nicht allgemein, und daher muss festgelegt werden, ob Ausdrücke wie überhaupt erlaubt sind, und, falls sie erlaubt sind, welche Klammerung implizit vorliegen soll. Wird festgelegt, dass „–“ linksassoziativ ist, ist wie zu interpretieren. Soll „–“ dagegen rechtsassoziativ sein, wäre wie zu interpretieren.
Remove ads
Linksassoziative Operatoren
Zusammenfassung
Kontext
Bei linksassoziativen 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 Operatoren sind:
|
||
|
||
Jedoch: Bei waagerechten Bruchstrichen bindet der kürzere Bruchstrich stärker: | ||
- Funktionsanwendung durch Juxtaposition in vielen Programmiersprachen, u. a. Haskell:
f x y z
=((f x) y) z
.
Remove ads
Rechtsassoziative Operatoren
Zusammenfassung
Kontext
Umgekehrt liegt bei rechtsassoziativen Operatoren implizite Rechtsklammerung vor, so dass gilt:
etc.
Beispiele für rechtsassoziative Operatoren sind:[6]
- Die Potenzierung: , denn wäre einfach .
Achtung: Taschenrechner werten Eingaben der Formx ^ 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 mitx = (y = z)
, das heißt, der Variableny
wird zunächst der Wert vonz
zugewiesen und erst danach das Ergebnis dieser Zuweisung (also der zugewiesene Wertz
) der Variablenx
zugewiesen. - Funktionsanwendung durch infix-
$
in Haskell:
f $ g $ h $ x
=f $ (g $ (h $ x))
.
Remove ads
Weder, noch
Es kann auch sein, dass Ausdrücke wie einfach verboten werden, selbst dann, wenn die Operation, für die der Operator steht, assoziativ ist.
So ist zum Beispiel in Haskell der Vergleichsoperator ==
, wie auch <=
,>
usw., in diesem Sinne „nicht-assoziativ“, obwohl die Vergleichsoperation zwischen Booleschen Werten etwa (als Funktion ) assoziativ ist.
Siehe auch
Einzelnachweise
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads