Fortran-operators-precedence
提供:Dev Guides
Fortran-演算子の優先順位
演算子の優先順位は、式内の用語のグループ化を決定します。 これは、式の評価方法に影響します。 特定の演算子は、他の演算子よりも優先順位が高くなっています。たとえば、乗算演算子は加算演算子よりも優先順位が高くなります。
たとえば、x = 7 + 3 * 2;ここでは、演算子*の優先順位が+よりも高いため、xには20ではなく13が割り当てられます。したがって、最初に3 * 2で乗算され、7に加算されます。
ここでは、優先順位が最も高い演算子が表の上部に表示され、優先順位が最も低い演算子が下部に表示されます。 式内では、優先順位の高い演算子が最初に評価されます。
Category | Operator | Associativity |
---|---|---|
Logical NOT and negative sign | .not. (-) | Left to right |
Exponentiation | ** | Left to right |
Multiplicative | */ | Left to right |
Additive | + - | Left to right |
Relational | < ⇐ > >= | Left to right |
Equality | ==/= | Left to right |
Logical AND | .and. | Left to right |
Logical OR | .or. | Left to right |
Assignment | = | Right to left |
例
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
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
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