这个Fortran条件表达式如何评估?

时间:2014-03-10 18:13:20

标签: if-statement fortran fortran95

在下面的Fortran95代码中,变量NMOM是一个整数,总是等于3.

P0的值是什么,1还是-1?除以2然后乘以2比特让我感到困惑,我不确定你为什么会这样做,但这是由一位90年代的非程序员科学家写的,他不再问。

P0=1
IF(NMOM-NMOM/2*2.EQ.1)P0=-1

代码在Linux机器上使用lf95编译。

1 个答案:

答案 0 :(得分:4)

我不知道Fortran,但我的猜测是它正在测试NMOM是奇数还是偶数。首先,用parens重写以模拟运算符优先级:

IF(NMOM-((NMOM/2)*2).EQ.1)P0=-1

如果我们使用整数数学然后(NMOM / 2)* 2 == NMOM,如果它甚至它将等于NMOM-1,如果它是奇数。