Pascal - 运算符优先级


运算符优先级决定表达式中术语的分组。这会影响表达式的计算方式。某些运算符的优先级高于其他运算符;例如,乘法运算符的优先级高于加法运算符。

例如x = 7 + 3 * 2;此处,x 被分配为 13,而不是 20,因为运算符 * 的优先级高于 +,因此它首先乘以 3*2,然后添加到 7。

在这里,优先级最高的运算符出现在表的顶部,优先级最低的运算符出现在底部。在表达式中,将首先计算优先级较高的运算符。下表表示 Pascal 运算符优先级 -

操作员 优先级
〜,不, 最高
*、/、div、mod 和、&
|、!、+、-、或、
=、<>、<、<=、>、>=、中
否则,然后 最低

尝试以下示例来了解 Pascal 中可用的运算符优先级 -

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
pascal_operators.htm