Pascal-operators-precedence

提供:Dev Guides
移動先:案内検索

パスカル-演算子の優先順位

演算子の優先順位は、式内の用語のグループ化を決定します。 これは、式の評価方法に影響します。 特定の演算子は、他の演算子よりも優先順位が高くなっています。たとえば、乗算演算子は加算演算子よりも優先順位が高くなります。

たとえば、x = 7 + 3 * 2;ここでは、演算子*の優先順位が+よりも高いため、xには20ではなく13が割り当てられます。したがって、最初に3 * 2で乗算され、7に加算されます。

ここでは、優先順位が最も高い演算子が表の上部に表示され、優先順位が最も低い演算子が下部に表示されます。 式内では、優先順位の高い演算子が最初に評価されます。 次の表は、パスカル演算子の優先順位を表しています-

Operator Precedence
~, not, Highest
*,/, div, mod, and, &
, !, +, -, or,
=, <>, <, ⇐, >, >=, in
or else, and then

パスカルで利用可能な演算子の優先順位を理解するために、次の例を試してください-

program opPrecedence;
var
a, b, c, d : integer;
e: real;

begin
   a := 20;
   b := 10;
   c := 15;
   d := 5;
   e := (a + b) * c/d;      ( *( 30* 15 )/5 *)
   writeln('Value of (a + b) *c/d is : ',  e:3:1 );

   e := ((a + b)* c)/d;    ( *(30* 15 )/5  *)
   writeln('Value of ((a + b) *c)/d is  : ' ,  e:3:1 );

   e := (a + b)* (c/d);   ( *(30)* (15/5)  *)
   writeln('Value of (a + b) *(c/d) is  : ',  e:3:1);

   e := a + (b* c)/d;     ( *20 + (150/5) * )
   writeln('Value of a + (b *c)/d is  : ' ,  e:3:1 );
end.

上記のコードをコンパイルして実行すると、次の結果が生成されます。

Value of (a + b)* c/d is : 90.0
Value of ((a + b) *c)/d is  : 90.0
Value of (a + b)* (c/d) is  : 90.0
Value of a + (b * c)/d is  : 50.0