2016-06-23 9 views
0

なぜこの値がfalseと評価されるのかわかりません。Fortran論理的比較

A = .false。 B =。

(A .eqv .true。または.B .eqv .True。)は私に偽を与えます。

条件文を動作させるためにパラセシスを追加する必要があります。誰も私にこのことを説明できますか?どうもありがとう!

答えて

3

私はそれが操作の順序だと思います。 .or.私はだからあなたの文が

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

していないが、確かに相当し.eqv.

よりも操作の高次を持っていると思います。

いずれかの方法、それは括弧で意図した順序を強制するのは簡単です:

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

(もちろん、あなたの例では、(A .or. B)に凝縮することができますが、私はそれがポイントではなかったと思います;))

+0

あなたはあなたの答えにもっと確かめることができます:それは正しいです。演算子の優先順位については、たとえばFortran 2008の表7.1を参照してください。 – francescalus

+0

宣言などが表示されていない場合は、「A.eqv..ru」を「A」で置き換えることはできません(https://stackoverflow.com/a/29034913)。 – francescalus

関連する問題