【问题标题】:How would this Fortran conditional expression evaluate?这个 Fortran 条件表达式将如何计算?
【发布时间】:2014-03-10 18:13:20
【问题描述】:

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

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

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

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

【问题讨论】:

  • IMO,如果程序有效(意味着它做了它应该做的事情并给出正确的结果)那么科学家程序员。他/她可能不是一个优秀的程序员(可以很好地优化或评论),但他们肯定是一个程序员。
  • 如果是Fortran 95,那绝对不是古代码。这在 Fortran 术语中几乎是现代的。 ??????

标签: if-statement fortran fortran95


【解决方案1】:

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

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

如果我们使用整数数学,那么 (NMOM/2)*2 == NMOM 如果它是偶数,它将等于 NMOM-1 如果它是奇数。

【讨论】:

  • 这里有趣的是整数运算,因为除以 2 将只给出结果的整数部分,现在一切都有意义了,感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 2016-11-26
  • 2017-06-19
  • 2012-07-11
相关资源
最近更新 更多