Fortran 简明教程
Fortran - Operators
运算符是一个告诉编译器执行特定数学或逻辑操作的符号。Fortran 提供以下类型的运算符 -
-
Arithmetic Operators
-
Relational Operators
-
Logical Operators
让我们逐个查看所有这些类型的运算符。
Arithmetic Operators
下表显示了 Fortran 支持的所有算术运算符。假设变量 A 保存 5,变量 B 保存 3,则 -
Operator |
Description |
Example |
+ |
加法运算符,加两个操作数。 |
A + B 将得到 8 |
- |
减法运算符,从第一个操作数中减去第二个操作数。 |
A - B 将得到 2 |
* |
乘法运算符,将两个操作数相乘。 |
A * B 将得到 15 |
/ |
除法运算符,将分子除以分母。 |
A / B 将给出 1 |
** |
指数运算符,将一个操作数提升到另一操作数的幂次。 |
A ** B 将给出 125 |
Relational Operators
下表显示了 Fortran 支持的所有关系运算符。假设变量 A 为 10,变量 B 为 20,则 −
Operator |
Equivalent |
Description |
Example |
== |
.eq. |
检查两个操作数的值是否相等,如果相等,则条件变为真。 |
(A == B) 不为真。 |
/= |
.ne. |
检查两个操作数的值是否相等,如果值不相等,则条件变为真。 |
(A != B) 为真。 |
> |
.gt. |
检查左操作数的值是否大于右操作数的值,如果大于,则条件变为真。 |
(A > B) 不为真。 |
< |
.lt. |
检查左操作数的值是否小于右操作数的值,如果小于,则条件变为真。 |
(A < B) 为真。 |
>= |
.ge. |
检查左操作数的值是否大于或等于右操作数的值,如果大于或等于,则条件变为真。 |
(A >= B) 不为真。 |
⇐ |
.le. |
检查左操作数的值是否小于或等于右操作数的值,如果小于或等于,则条件变为真。 |
(A ⇐ B) 为真。 |
Logical Operators
Fortran 中的逻辑运算符仅针对逻辑值 .true. 和 .false. 工作。
下表显示了 Fortran 支持的所有逻辑运算符。假设变量 A 为 .true.,变量 B 为 .false.,则 −
Operator |
Description |
Example |
.and. |
称为逻辑 AND 运算符。如果两个运算数都非零,条件变为真。 |
(A .and. B) 为假。 |
.or. |
称为逻辑 OR 运算符。如果任何一个运算数非零,条件变为真。 |
(A .or. B) 为真。 |
.not. |
称为逻辑 NOT 运算符。用于反转操作数的逻辑状态。如果条件为 true,则逻辑 NOT 运算符会将其变为 false。 |
!(A .and. B) 为真。 |
.eqv. |
称为逻辑等价运算符。用于检查两个逻辑值是否相等。 |
(A .eqv. B) 为假。 |
.neqv. |
称为逻辑不等价运算符。用于检查两个逻辑值是否不等价。 |
(A .neqv. B) 为真。 |
Operators Precedence in Fortran
运算符优先级确定表达式中项的分组。这会影响表达式的求值方式。某些运算符比其他运算符具有更高的优先级;例如,乘法运算符的优先级高于加法运算符。
例如,x = 7 + 3 * 2;此处,x 被赋值为 13,而不是 20,因为运算符 * 优先级高于 +,因此其首先与 3*2 相乘,然后加到 7 中。
此处,优先级最高的运算符显示在表顶部,优先级最低的运算符显示在表底部。在表达式中,将首先评估优先级较高的运算符。
Category |
Operator |
Associativity |
逻辑非和负号 |
.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 |