Frage

Was ist Assoziativität (für einen Operator) und warum es wichtig ist?

Aktualisiert: Operatorassoziativität

War es hilfreich?

Lösung

Für die Betreiber Assoziativität bedeutet, dass, wenn der gleiche Operator in einer Zeile angezeigt wird, dann der Operator Vorkommen wir zuerst anwenden. Im Folgenden lassen Q der Operator

a Q b Q c

Wenn Q assoziative gelassen wird, dann wertet es als

(a Q b) Q c

Und wenn es richtig ist assoziativ, wertet es als

a Q (b Q c)

Es ist wichtig, da sie die Bedeutung eines Ausdrucks ändert. Betrachten Sie den Divisions-Operator mit Integer-Arithmetik, die linke assoziativ ist

4 / 2 / 3    <=>    (4 / 2) / 3    <=> 2 / 3     = 0

Wenn es richtig assoziativen ist, es auf einen nicht definierte Ausdruck auswerten würde, da man durch Null teilen würde

4 / 2 / 3    <=>    4 / (2 / 3)    <=> 4 / 0     = undefined

Andere Tipps

Es gibt drei Arten von Assoziativität:

die assoziative Eigenschaft in Mathematik

Reihenfolge der Vorgänge in Programmiersprachen

Assoziativität in CPU-Caches.

Die assoziative Eigenschaft in der Mathematik ist eine Eigenschaft von Operatoren wie Addition (+). Diese Eigenschaft ermöglicht es Ihnen, Klammern ohne Änderung der Wert einer Anweisung neu zu ordnen, das heißt:.

(a + b) + c = a + (b + c)

In Programmiersprachen, die Assoziativität (oder fixity) eines Operators ist eine Eigenschaft, die wie die Betreiber von gleicher Priorität bestimmt gruppiert sind in der Abwesenheit von Klammern; das heißt, in welcher Reihenfolge wird jeder Betreiber ausgewertet. Dies kann zwischen Programmiersprachen unterscheiden.

In CPU-Caches, die Assoziativität ist ein Verfahren zur Optimierung der Leistung.

es ist die Reihenfolge für die Betreiber von gleicher Priorität bewerten von. Von links nach rechts oder von rechts nach, um Fragen LINKE. Für

3 - 2 - 1

, wenn es links nach rechts, dann ist es

(3 - 2) - 1

und ist 0. Wenn es rechts nach links ist, dann ist es

3 - (2 - 1)

und es ist 2. In den meisten Sprachen, sagen wir, dass der Minus-Operator von links nach rechts Assoziativität hat.

Wenn Sie auf „Operatorassoziativität“ beziehen - es ist wie eine Sprache bestimmt, wie Operatoren gleicher Priorität werden in Abwesenheit von Klammern gruppiert.

Zum Beispiel kann die Operatoren + und - in C-basierten Sprachen haben die gleiche Priorität. Wenn Sie schreiben einen Ausdruck, der beide verwendet (ohne Klammern) der Compiler bestimmen müssen, was um sie in zu bewerten.

Wenn Sie 12 schreiben - 5 + 3, die möglichen Auswertungen sind:

  1. (12-5) + 3 = 10
  2. 12 - (5 + 3) = 4

Je nach Auftrag Sie den Ausdruck in bewerten, können Sie unterschiedliche Ergebnisse erhalten. In C-basierte Sprachen, + und - Assoziativität verlassen hat, was bedeutet, dass der obige Ausdruck als ersten Fall beurteilen würde

.

haben alle Sprachregeln stark definiert sowohl für Vorrang und Assoziativität. Sie können mehr über die Regeln lernen für C # hier . Die allgemeinen Konzepte der Betreiber Assoziativität und Vorrang auf wikipedia gut abgedeckt.

Einfache !!

Linke Assoziative bedeutet, dass wir unseren Ausdruck von links nach rechts

bewerten

Right Assoziative bedeutet, dass wir unseren Ausdruck von rechts nach links zu bewerten

Wir wissen, *, / und% haben gleiche Priorität, aber wie pro Assoziativität kann Antwort ändern:

Für zB: Wir haben Ausdruck: 4 * 02.08% 5

links assoziativ: (4 * 8) / 2% 5 ==> (32/2) 5% ==> 16% 5 ==> 1

Right assoziativ: 4 * 8 / (2% 5) ==> 4 * (8/0) ==> undefiniertes Verhalten

Ich hoffe, dies würde helfen.

Ich nehme an, Sie meinen Operatorassoziativität ...

Es ist die Reihenfolge der Operanden an einen Betreiber zu binden. Grundsätzlich gilt:

a - b + c

könnte als (unter der Annahme - und + haben die gleiche Priorität) bewertet werden:

((a - b) + c) oder,
(A - (b + c))

Wenn Operatoren assoziativ gelassen werden (binden unmittelbar an den linken Operanden), wird es als erstes ausgewertet werden. Wenn sie richtig assoziativ ist, wird es als zweites ausgewertet werden.

Wenn Sie Operatorassoziativität bedeuten:

Es definiert die Art und Weise Ausdrücke analysiert werden. Es gibt einen Standard, so wird jeder Ausdruck auf die gleiche Weise analysiert.

Es ist vor allem für den Betrieb wichtig, die die gleichen precedense haben, wenn es könnte Nebenwirkungen sein.

Die meisten der vorherigen Beispiele haben Konstanten verwendet. Wenn die Argumente passieren Funktionsaufrufe sein, ist die Reihenfolge, dass die Anrufe gemacht werden können durch die Assoziationsregeln bestimmt werden, natürlich auf Ihrem Compiler abhängig. Und wenn diese Funktionen haben Nebenwirkungen ..

Wir alle wissen, dass Vorrang wichtig ist, aber so ist Assoziativität die Bedeutung eines Ausdrucks in der Interpretation. Für ein wirklich einfaches Intro versuchen Power of Operators .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top