If statement 这个Fortran条件表达式将如何计算?
在Fortran95代码中,变量NMOM是一个整数,始终等于3 P0的值是1还是-1?除以2再乘以2位让我感到困惑,我不知道你为什么要这样做,但这是由一位非程序员科学家在90年代写的,他已经不想再问了If statement 这个Fortran条件表达式将如何计算?,if-statement,fortran,fortran95,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编译的。我不知道Fortran,但我猜它正在测试NMOM是奇数还是偶数。首先,使用parens重写以模拟运算符优先级: IF(NMOM-((NMOM/2)*2).EQ.1)P0=-1 如果我们使
P0=1
IF(NMOM-NMOM/2*2.EQ.1)P0=-1
代码是在Linux机器上用lf95编译的。我不知道Fortran,但我猜它正在测试NMOM是奇数还是偶数。首先,使用parens重写以模拟运算符优先级:
IF(NMOM-((NMOM/2)*2).EQ.1)P0=-1
如果我们使用整数数学,那么(NMOM/2)*2==NMOM,如果它是偶数,那么它将等于NMOM-1,如果它是奇数。我不知道Fortran,但我猜它正在测试NMOM是奇数还是偶数。首先,使用parens重写以模拟运算符优先级:
IF(NMOM-((NMOM/2)*2).EQ.1)P0=-1
如果我们使用整数数学,那么(NMOM/2)*2==NMOM,如果它是偶数,那么它将等于NMOM-1,如果它是奇数。IMO,如果程序工作(意味着它做它应该做的事情并给出正确的结果),那么科学家就是一个程序员。他/她可能不是一个好的程序员(能够很好地进行优化或注释),但他们肯定是一个程序员。如果是Fortran 95,那肯定不是古老的代码。用Fortran语言来说,这实际上是现代的。依我看,如果程序能工作(意味着它做了它应该做的事情并给出了正确的结果),那么科学家就是一个程序员。他/她可能不是一个好的程序员(能够很好地进行优化或注释),但他们肯定是一个程序员。如果是Fortran 95,那肯定不是古老的代码。用Fortran语言来说,这实际上是现代的。整数运算是这里最有趣的,因为除以2只会得到结果的整数部分,现在一切都有意义了,谢谢你的帮助!整数运算是这里最有趣的,因为除以2只会得到结果的整数部分,现在一切都有意义了,谢谢你的帮助!