2016-06-23 2 views
0

왜 이것이 false로 평가되는지 이해할 수 없습니다.포트란 논리 비교

A = .false. B = .true.

(A .eqv. .true. 또는 .B .eqv...).이 나에게 .false를 제공합니다.

내 조건문을 만들기 위해 보조 분석을 추가해야합니다. 아무도 나에게 이것을 설명 할 수 있 었는가? 많은 감사합니다!

답변

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.qq..rue.'를'A'로 대체 할 수 있다고 가정하지는 않습니다 (https://stackoverflow.com/a/29034913). – francescalus