Qual è l’associatività degli operatori e perché è importante?

Che cos’è l’associatività (per un operatore) e perché è importante?

Aggiornato: associatività dell’operatore

Per gli operatori, l’associatività indica che quando lo stesso operatore appare in una riga, quindi quale occorrenza dell’operatore applichiamo prima. Di seguito, sia Q l’operatore

 a Q b Q c 

Se Q è lasciato associativo, allora valuta come

 (a Q b) Q c 

E se è giusto associativo, allora valuta come

 a Q (b Q c) 

È importante, poiché cambia il significato di un’espressione. Si consideri l’operatore di divisione con aritmetica intera, che viene lasciata associativa

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

Se fosse associativo, valuterà un’espressione indefinita, dato che divideresti per zero

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

Esistono tre tipi di associatività:

La proprietà associativa in matematica

Ordine delle operazioni nei linguaggi di programmazione

Associatività nelle cache della CPU.

La proprietà associativa in matematica è una proprietà di operatori come addizione (+). Questa proprietà consente di riorganizzare le parentesi senza modificare il valore di un’istruzione, ad esempio:

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

Nei linguaggi di programmazione, l’associatività (o fissità) di un operatore è una proprietà che determina come gli operatori della stessa precedenza sono raggruppati in assenza di parentesi; cioè in quale ordine viene valutato ogni operatore. Questo può variare tra i linguaggi di programmazione.

Nelle cache della CPU, l’associatività è un metodo per ottimizzare le prestazioni.

è l’ordine di valutare per gli operatori della stessa precedenza. L’ordine da sinistra a destra o da destra a sinistra conta. Per

 3 - 2 - 1 

se è SINISTRA a DESTRA, allora lo è

 (3 - 2) - 1 

ed è 0. Se è DESTRA a SINISTRA, allora lo è

 3 - (2 - 1) 

ed è 2. Nella maggior parte delle lingue, diciamo che l’operatore meno ha un’associatività da SINISTRA A DESTRA.

Se ci si riferisce all ‘”associatività dell’operatore”, è come una lingua determina come gli operatori della stessa precedenza sono raggruppati in assenza di parentesi.

Ad esempio, gli operatori + e – nelle lingue basate su C hanno la stessa precedenza. Quando scrivi un’espressione che usa entrambi (senza parentesi) il compilatore deve determinare in che ordine valutarli.

Se scrivi 12 – 5 + 3, le possibili valutazioni includono:

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

A seconda dell’ordine in cui valuti l’espressione, puoi ottenere risultati diversi. Nei linguaggi basati su C, + e – hanno lasciato l’associatività, il che significa che l’espressione sopra valuterà come primo caso.

Tutte le lingue hanno regole fortemente definite sia per la precedenza che per l’associatività. Puoi saperne di più sulle regole di C # qui. I concetti generali di associatività e precedenza dell’operatore sono ben trattati su wikipedia.

Immagino tu intenda l’associatività dell’operatore …

È l’ordine di associazione degli operandi a un operatore. Fondamentalmente:

a – b + c

potrebbe essere valutato come (assumendo – e + hanno la stessa precedenza):

((a – b) + c) o,
(a – (b + c))

Se gli operatori sono associati in modo associativo (eseguono il binding immediatamente sull’operando di sinistra), verrà valutato come il primo. Se hanno ragione associativa, sarà valutato come il secondo.

Semplice!! Associato sinistro significa che valutiamo la nostra espressione da sinistra a destra.

Giusto associativo significa che valutiamo la nostra espressione da destra a sinistra.

Sappiamo che *, / e% hanno la stessa precedenza, ma secondo la risposta di associatività possono cambiare.

Ad esempio: ho exp: 4 * 8/2% 5

Sinistra associativa: (4 * 8) / 2% 5 ==> (32/2)% 5 ==> 16% 5 ==> 1

Right associative: 4 * 8 / (2% 5) ==> 4 * (8/0) ==> Comportamento indefinito

Spero che questo possa essere d’aiuto. . .

Se intendi l’associatività dell’operatore:

Definisce il modo in cui le espressioni vengono analizzate. Dà uno standard, quindi ogni espressione viene analizzata nello stesso modo.

È soprattutto importante per le operazioni che hanno lo stesso precedente, quando potrebbero esserci effetti collaterali.

La maggior parte degli esempi precedenti ha utilizzato le costanti. Se gli argomenti sono chiamate di funzione, l’ordine in cui vengono effettuate le chiamate può essere determinato dalle regole di associazione, a seconda ovviamente del compilatore. E se quelle funzioni hanno effetti collaterali ..

Sappiamo tutti che la precedenza è importante, ma lo è anche l’associatività nell’interpretazione del significato di un’espressione. Per un’introduzione davvero semplice prova Power of Operators .