Fortran 逻辑比较
Fortran logical compare
不明白为什么这个被评价为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)
,但我想这不是重点;))
不明白为什么这个被评价为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)
,但我想这不是重点;))