Pregunta

¿Cuál es la asociatividad (por un operador) y por qué es importante?

Actualizado: asociatividad de operadores

¿Fue útil?

Solución

Para los operadores, asociatividad significa que cuando el mismo operador aparece en una fila, a continuación, los cuales ocurrencia operador aplicamos primero. En lo que sigue, vamos Q sea el operador

a Q b Q c

Si se deja Q asociativo, a continuación, se evalúa como

(a Q b) Q c

Y si es asociativa derecha, entonces se evalúa como

a Q (b Q c)

Es importante, ya que cambia el significado de una expresión. Considere el operador de división con la aritmética de enteros, que es asociativa izquierda

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

Si fuera asociativa derecha, sería evaluar a una expresión indefinida, ya que hay que dividir por cero

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

Otros consejos

Hay tres tipos de asociatividad:

la propiedad asociativa en matemáticas

orden de las operaciones en lenguajes de programación

asociatividad en cachés de CPU.

la propiedad asociativa en matemáticas es una propiedad de los operadores tales como suma (+). Esta propiedad le permite reorganizar paréntesis sin cambiar el valor de una declaración, es decir:.

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

En los lenguajes de programación, la asociatividad (o fijación) de un operador es una propiedad que determina cómo los operadores con la misma precedencia se agrupan en el ausencia de paréntesis; es decir, en qué orden se evalúa cada operador. Esto puede variar entre los lenguajes de programación.

En cachés de la CPU, la asociatividad es un método de optimización del rendimiento.

es el orden de evaluar la presencia de operadores con la misma precedencia. La izquierda a derecha o de derecha a izquierda orden importa. Para

3 - 2 - 1

si se izquierda a derecha, entonces es

(3 - 2) - 1

y es 0. Si se trata de derecha a izquierda, entonces es

3 - (2 - 1)

y es 2. En la mayoría de los idiomas, se dice que el operador menos tiene una asociación de izquierda a derecha.

Si se refiere a la "asociatividad de operadores" - es cómo un lenguaje determina cómo los operadores con la misma precedencia se agrupan en ausencia de paréntesis.

Por ejemplo, + y - operadores en idiomas basados-C tienen la misma prioridad. Cuando se escribe una expresión que utiliza dos de ellos (sin paréntesis) el compilador debe determinar qué fin de evaluar en.

Si escribe 12 - 5 + 3, las posibles evaluaciones incluyen:

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

En función de la orden a evaluar la expresión, puede obtener resultados diferentes. En C-basada idiomas, + y - han dejado asociatividad, lo que significa que la expresión anterior evaluaría como el primer caso

.

Todo el lenguaje haber reglas de precedencia y asociatividad tanto fuertemente definidos. Usted puede aprender más acerca de las reglas para C # aquí . Los conceptos generales de operador asociatividad y precedencia están bien cubiertos en wikipedia.

simple !!

Izquierda asociativo significa que evaluamos nuestra expresión de izquierda a derecha

Derecho asociativo significa que evaluamos nuestra expresión de derecha a izquierda

Sabemos *, / y% tienen misma precedencia, pero según la asociatividad, respuesta puede cambiar:

Para por ejemplo: Tenemos expresión: 4 * 8/2% 5

asociativo Izquierda: (4 * 8) / 2% 5 ==> (32/2)% 5 ==> 16% 5 ==> 1

asociativo Derecha: 4 * 8 / (2% 5) ==> 4 * (8/0) ==> comportamiento indefinido

Espero que esto ayudaría.

supongo que te refieres asociatividad de operadores ...

Es el orden de unión de operandos de un operador. Básicamente:

a - b + c

podrían ser evaluados como (asumiendo - y + tener la misma prioridad):

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

Si los operadores se dejan asociativa (unirse inmediatamente a la izquierda del operando), que va a ser evaluado como el primero. Si ellos son asociativos a la derecha, que va a ser evaluada como la segunda.

Si se refiere a la asociatividad del operador:

Define la forma en que se analizan las expresiones. Se da una norma, por lo que cada expresión se analiza de la misma manera.

Es sobre todo importante para las operaciones que tienen el mismo precedense, cuando podría haber efectos secundarios.

La mayoría de los ejemplos anteriores han utilizado constantes. Si los argumentos resultan ser las llamadas de función, el orden en que las llamadas se realizan en pueden ser determinadas por las reglas de asociación, dependiendo por supuesto de su compilador. Y si esas funciones tienen efectos secundarios ..

Todos sabemos que la prioridad es importante, pero también lo es la asociatividad para interpretar el significado de una expresión. Para una introducción muy simple prueba a Poder de Operadores .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top