Fortran - Precedência de Operadores
A precedência do operador determina o agrupamento de termos em uma expressão. Isso afeta como uma expressão é avaliada. Certos operadores têm precedência mais alta do que outros; por exemplo, o operador de multiplicação tem precedência mais alta do que o operador de adição.
Por exemplo, x = 7 + 3 * 2; aqui, x é atribuído a 13, não 20, porque o operador * tem precedência mais alta que +, então ele primeiro é multiplicado por 3 * 2 e, em seguida, é adicionado a 7.
Aqui, os operadores com a precedência mais alta aparecem na parte superior da tabela, aqueles com a mais baixa aparecem na parte inferior. Em uma expressão, os operadores de precedência mais altos serão avaliados primeiro.
Categoria | Operador | Associatividade |
---|---|---|
NOT lógico e sinal negativo | .não. (-) | Da esquerda para direita |
Exponenciação | ** | Da esquerda para direita |
Multiplicativo | * / | Da esquerda para direita |
Aditivo | + - | Da esquerda para direita |
Relacional | <<=>> = | Da esquerda para direita |
Igualdade | == / = | Da esquerda para direita |
E lógico | .e. | Da esquerda para direita |
OR lógico | .ou. | Da esquerda para direita |
Tarefa | = | Direita para esquerda |
Exemplo
Tente o exemplo a seguir para entender a precedência do operador em Fortran -
program precedenceOp
! this program checks logical operators
implicit none
! variable declaration
integer :: a, b, c, d, e
! assigning values
a = 20
b = 10
c = 15
d = 5
e = (a + b) * c / d ! ( 30 * 15 ) / 5
print *, "Value of (a + b) * c / d is : ", e
e = ((a + b) * c) / d ! (30 * 15 ) / 5
print *, "Value of ((a + b) * c) / d is : ", e
e = (a + b) * (c / d); ! (30) * (15/5)
print *, "Value of (a + b) * (c / d) is : ", e
e = a + (b * c) / d; ! 20 + (150/5)
print *, "Value of a + (b * c) / d is : " , e
end program precedenceOp
Quando você compila e executa o programa acima, ele produz o seguinte resultado -
Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90
Value of a + (b * c) / d is : 50