Pergunta

O que é associatividade (para um operador) e por que é importante?

Atualizado: associatividade de operadores

Foi útil?

Solução

Para os operadores, meios de associatividade que quando o mesmo operador aparece em uma linha, em seguida, qual o operador ocorrência aplicamos em primeiro lugar. A seguir, vamos Q ser o operador

a Q b Q c

Se Q é associativa à esquerda, em seguida, ele avalia como

(a Q b) Q c

E se é associativos à direita, em seguida, ele avalia como

a Q (b Q c)

É importante, uma vez que muda o significado de uma expressão. Considere o operador de divisão com a aritmética inteiro, que é deixado associativo

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

Se fosse associativos à direita, seria avaliar a uma expressão indefinida, uma vez que você dividir por zero

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

Outras dicas

Existem três tipos de associatividade:

A associatividade em matemática

Ordem das operações em linguagens de programação

Associativity em caches de CPU.

A propriedade associativo em matemática é uma propriedade de operadores tais como adição (+). Esta propriedade permite que você parênteses Reorganizar sem alterar o valor de uma declaração, ou seja:.

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

Em linguagens de programação, a associatividade (ou fixidez) de um operador é uma propriedade que determina como os operadores da mesma precedência são agrupados no ausência de parênteses; ou seja, em que ordem cada operador é avaliada. Isso pode diferir entre linguagens de programação.

Em caches de CPU, associatividade é um método de otimização de desempenho.

é o fim de avaliar para operadores da mesma precedência. As esquerda para a direita ou direita para a esquerda ordem importa. Para

3 - 2 - 1

se é esquerda para a direita, então é

(3 - 2) - 1

e é 0. Se for direita para a esquerda, então é

3 - (2 - 1)

e é 2. Na maioria das linguagens, dizemos que o operador menos tem uma associatividade ESQUERDA PARA A DIREITA.

Se você está se referindo "associatividade de operadores" - é como uma linguagem determina como operadores da mesma precedência são agrupados na ausência de parênteses.

Por exemplo, + e - operadores em linguagens baseadas em C têm a mesma precedência. Quando você escrever uma expressão que usa tanto deles (sem parênteses) o compilador deve determinar o fim de avaliá-los.

Se você escrever 12-5 + 3, as possíveis avaliações incluem:

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

Dependendo da ordem que você avaliar a expressão, você pode obter resultados diferentes. Em linguagens baseadas em C + e - têm associatividade esquerda, o que significa que a expressão acima iria avaliar como o primeiro caso

.

Todas as línguas têm regras para ambos precedência e associatividade fortemente definida. Você pode aprender mais sobre as regras para C # aqui . Os conceitos gerais de operador associatividade e precedência estão bem cobertos na wikipedia.

Simples !!

Esquerda associativas meio avaliamos nossa expressão da esquerda para a direita

Direito Associativo meio avaliamos nossa expressão da direita para a esquerda

Sabemos *, / e% têm a mesma prioridade, mas como por associatividade, a resposta pode mudar:

Por exemplo: Temos expressão: 4 * 8/2% 5

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

associativo Direita: 4 * 8 / (2% 5) ==> 4 * (8/0) ==> comportamento indefinido

Espero que isso ajudaria.

Eu suponho que você associatividade de operadores média ...

É a ordem de ligação de operandos de um operador. Basicamente:

a - b + c

pode ser avaliada como (assumindo - e + têm a mesma precedência):

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

Se os operadores são associativos à esquerda (ligam imediatamente para o operando à esquerda), que vai ser avaliada como o primeiro. Se eles são associativos à direita, vai ser avaliada como o segundo.

Se você associatividade média operador:

Ele define a maneira expressões são analisados. Ele dá um padrão, de modo que cada expressão é analisado da mesma forma.

É sobretudo importante para as operações que têm a mesma precedense, quando poderia haver efeitos colaterais.

A maioria dos exemplos anteriores têm constantes usados. Se os argumentos acontecem ser chamadas de função, a ordem que as chamadas são feitas no pode ser determinada pelas regras de associação, dependendo do curso sobre o seu compilador. E se essas funções têm efeitos colaterais ..

Nós todos sabemos que a precedência é importante, mas assim é a associatividade em interpretar o significado de uma expressão. Para realmente um simples introdução tentar poder dos operadores .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top