Fortran逻辑比较
我不明白为什么这一个被评估为错误的Fortran逻辑比较,fortran,comparison,logical-operators,Fortran,Comparison,Logical Operators,我不明白为什么这一个被评估为错误的 A = .false. B = .true. (A.eqv..true..or.B.eqv..true.)给了我。假 我必须添加括号才能使条件语句正常工作。谁能给我解释一下吗?我想这是操作规程.or.我认为它的操作顺序比.eqv. 所以你的陈述相当于 ((A .eqv. (.true. .or. B)) .eqv. .true.) ((A .eqv. .true. ) .eqv. .true.) ( .false.
A = .false.
B = .true.
(A.eqv..true..or.B.eqv..true.)给了我。假
我必须添加括号才能使条件语句正常工作。谁能给我解释一下吗?我想这是操作规程
.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.或.B)
,但我想这不是重点;)我认为这是操作顺序.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)
,但我想这不是重点;)你的答案可以更加肯定:它是正确的。例如,有关运算符优先级,请参见Fortran 2008的表7.1。在没有看到声明等的情况下,A.eqv..true.
不能替换为A
。您可以更确定地回答:它是正确的。例如,有关运算符优先级,请参见Fortran 2008的表7.1。在没有看到声明等的情况下,A.eqv..true.
不能替换为A
。