Domanda

Qual è associatività (per un operatore) e perché è importante?

Aggiornamento: di associatività

È stato utile?

Soluzione

Per gli operatori, associatività significa che quando lo stesso operatore appare in una riga, poi cui la comparsa operatore applichiamo prima. Nel seguito, lascia Q sia l'operatore

a Q b Q c

Se Q viene lasciato associativa, allora valutata come

(a Q b) Q c

E se è associativa a destra, poi si valuta come

a Q (b Q c)

E 'importante, dal momento che cambia il significato di un'espressione. Si consideri l'operatore di divisione con aritmetica intera, che è associativa sinistra

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

Se fosse associativa a destra, si sarebbe valutato come un'espressione indefinita, dal momento che sarebbe dividere per zero

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

Altri suggerimenti

Ci sono tre tipi di associatività:

la proprietà associativa in matematica

Ordine delle operazioni nei linguaggi di programmazione

associatività nella cache della CPU.

La struttura associativa in matematica è una proprietà di operatori come l'addizione (+). Questa proprietà consente di riorganizzare parentesi senza modificare il valore di una dichiarazione, vale a dire:.

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

In linguaggi di programmazione, l'associatività (o fixity) di un operatore è una proprietà che determina come operatori con la stessa precedenza vengono raggruppati nella assenza di parentesi; cioè in quale ordine valutata ogni operatore. Questo può variare tra i linguaggi di programmazione.

In cache CPU, associatività è un metodo per ottimizzare le prestazioni.

è l'ordine di valutazione per gli operatori con la stessa precedenza. La sinistra a destra o da destra a sinistra le questioni di ordine. Per

3 - 2 - 1

se viene da sinistra a destra, allora è

(3 - 2) - 1

ed è 0. Se è da destra a sinistra, allora è

3 - (2 - 1)

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

Se si fa riferimento a "operatore associatività" - è come una lingua determina come operatori con la stessa precedenza vengono raggruppati in assenza di parentesi.

Per esempio, il + e - gli operatori in lingue basate su C hanno la stessa precedenza. Quando si scrive un'espressione che utilizza entrambi (senza parentesi) il compilatore deve determinare quale ordine di valutare loro.

Se si scrive 12-5 + 3, le possibili valutazioni comprendono:

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

A seconda dell'ordine a valutare l'espressione, è possibile ottenere risultati diversi. In C-based lingue, + e - hanno lasciato l'associatività, il che significa che l'espressione di cui sopra sarebbe di valutare come il primo caso

.

Tutti linguaggio hanno regole sia per la priorità e l'associatività fortemente definito. È possibile saperne di più sulle regole per C # qui . I concetti generali di operatore associatività e precedenza sono ben coperti su wikipedia.

semplice !!

Sinistra associativo significa valutiamo la nostra espressione da sinistra a destra

Diritto associativo significa valutiamo la nostra espressione da destra a sinistra

Sappiamo *, / e% hanno stessa precedenza, ma secondo l'associatività, risposta potrebbe cambiare:

Per esempio: Abbiamo espressione: 4 * 8/2% 5

associativo rimasto: (4 * 8) / 2% 5 ==> (32/2)% 5 ==> 16% 5 ==> 1

associativa destra: 4 * 8 / (2% 5) ==> 4 * (8/0) ==> comportamento non definito

Spero che questo sarebbe di aiuto.

suppongo che voi dire di associatività ...

E 'dell'ordine di legame di operandi ad un operatore. In sostanza:

a - b + c

potrebbe essere valutato come (supponendo - e + hanno la stessa precedenza):

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

Se gli operatori sono lasciati associativa (legare immediatamente a operando a sinistra), che sarà essere valutato come il primo. Se sono associativi a destra, sarà valutata come la seconda.

Se vuoi dire di associatività:

Esso definisce il modo in cui le espressioni vengono analizzati. Dà uno standard, così ogni espressione viene analizzato allo stesso modo.

E 'soprattutto importante per le operazioni che hanno lo stesso precedense, quando ci potrebbero essere effetti collaterali.

La maggior parte degli esempi precedenti hanno usato costanti. Se gli argomenti capita di essere chiamate di funzione, l'ordine che le chiamate vengono effettuate nel possono essere determinati dalle regole di associazione, a seconda ovviamente compilatore. E se queste funzioni hanno effetti collaterali ..

Sappiamo tutti che la precedenza è importante, ma lo è anche l'associatività nell'interpretare il significato di un'espressione. Per una molto semplice intro prova a potere di operatori .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top