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