9

这个 Fortran 代码是什么意思:

   IF (J1-3) 20, 20, 21
21 J1 = J1 - 3
20 IF (J2-3) 22, 22, 23
23 J2 = J2 - 3
22 CONTINUE

我在旧项目中见过,我不知道这个带有数字(标签)的 IF 是什么意思。

4

1 回答 1

11

这是来自 FORTRAN 77 的算术if语句。改编自 FORTRAN 77 规范(重点是我的):

算术IF语句的形式为:

IF (e) s1 , s2 , s2

  • 其中:e是整数、实数或双精度表达式

  • s1, s2, 和s3是与算术语句出现在同一程序单元中的可执行语句的语句标签IF。同一个语句标签在同一个算术语句中可能出现多次IF

执行算术IF语句会导致对表达式进行评估,e然后转移控制。由、标识的语句接下来执行,因为 的值分别小于零、等于零或大于零。s1s2s3e

对于您问题中的示例,从上面的最后一句话中,

  • 如果J1-3 < 0将执行语句 20
  • ifJ1-3 = 0语句 20 也将被执行
  • 如果J1-3 > 0将执行语句 21

编辑:一种现代且更具可读性的编写方式是:

if (J1-3 > 0) J1 = J1 - 3
if (J2-3 > 0) J2 = J2 - 3
于 2012-06-20T17:30:12.310 回答