Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Atual »

Ordem de Precedência dos Operadores

Abrangência

Versão 5.07

Versão 5.08

Versão 6.09

Versão 7.10

Versão 8.11

Versões Anteriores


Dependendo do tipo de operador, existe uma ordem de precedência para a avaliação dos operandos. Em princípio, todas as operações com os operadores são realizadas da esquerda para a direita se eles tiverem o mesmo nível de prioridade.

A ordem de precedência, ou nível de prioridade de execução, dos operadores em AdvPl é:

  • 1. Operadores de Incremento/Decremento pré-fixado

  • 2. Operadores de String

  • 3. Operadores Matemáticos

  • 4. Operadores Relacionais

  • 5. Operadores Lógicos

  • 6. Operadores de Atribuição

  • 7. Operadores de Incremento/Decremento pós-fixado



Em expressões complexas com diferentes tipos de operadores, a avaliação seguirá essa sequência. Caso exista mais de um operador do mesmo tipo (ou seja, de mesmo nível), a avaliação se dá da esquerda para direita. Para os operadores matemáticos entretanto há uma precedência a seguir:

  • 1. Exponenciação

  • 2. Multiplicação e Divisão

  • 3. Adição e Subtração



Considere o exemplo:


Local nResultado := 2+10/2+5*3+2^3



O resultado desta expressão é 30, pois primeiramente é calculada a exponenciação 2^3(=8), então são calculadas as multiplicações e divisões 10/2(=5) e 5*3(=15), e finalmente as adições resultando em 2+5+15+8(=30).

Alteração da Precedência


A utilização de parênteses dentro de uma expressão altera a ordem de precedência dos operadores. Operandos entre parênteses são analisados antes dos que se encontram fora dos parênteses. Se existirem mais de um conjunto de parênteses não-aninhados, o grupo mais a esquerda será avaliado primeiro e assim sucessivamente.


Local nResultado := (2+10)/(2+5)*3+2^3



No exemplo acima primeiro será calculada a exponenciação 2^3(=8). Em seguida 2+10(=12) será calculado, 2+5(=7) calculado, e finalmente a divisão e a multiplicação serão efetuadas, o que resulta em 12/7*3+8(=13.14).

Se existirem vários parênteses aninhados, ou seja, colocados um dentro do outro, a avaliação ocorrerá do parênteses mais intero em direção ao mais externo.



  • Sem rótulos