Fortran逻辑比较



我不明白为什么将此评估为false。

A = .false.
B = .true.

(a .eqv。.true.or。b.eqv。.True。)给我.false。

我必须添加括号以使我的有条件的陈述起作用。有人可以向我解释一下吗?

我认为这是操作顺序。.or.我认为比.eqv.

具有更高的操作。

因此您的语句等效于

((A .eqv. (.true. .or. B)) .eqv. .true.)
((A .eqv.     .true.     ) .eqv. .true.)
(     .false.              .eqv. .true.)
                .false.

不确定。

无论哪种方式,都很容易用括号的预期顺序:

((A .eqv. .true.) .or. (B .eqv. .true.))

(当然,您的示例可以凝结到(A .or. B)中,但我想这不是重点;))

最新更新