O que é associatividade de operadores e por que é importante?
-
06-09-2019 - |
Pergunta
O que é associatividade (para um operador) e por que é importante?
Atualizado: associatividade de operadores
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:
- (12 - 5) + 3 = 10
- 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 ??p>
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
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 .