Fortran 简明教程

Fortran - Operators

运算符是一个告诉编译器执行特定数学或逻辑操作的符号。Fortran 提供以下类型的运算符 -

  1. Arithmetic Operators

  2. Relational Operators

  3. 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