【发布时间】:2012-06-22 21:39:28
【问题描述】:
这个 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 是什么意思。
【问题讨论】:
-
在 FORTRAN 的早期,这并不奇怪——它是当时语言中唯一的条件语句。
这个 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 是什么意思。
【问题讨论】:
这是来自 FORTRAN 77 的 arithmetic if statement。改编自 FORTRAN 77 规范(重点是我的):
算术
IF语句的形式为:
IF (e) s1 , s2 , s2
其中:
e是整数、实数或双精度表达式
s1、s2和s3分别是与算术IF语句出现在同一程序单元中的可执行语句的语句标签。同一个语句标签可能在同一个算术IF语句中出现多次。算术
IF语句的执行会导致表达式e的求值,然后是控制权转移。s1、s2或s3标识的语句在e的值分别小于零、等于零或大于零时执行。
对于您问题中的示例,来自上面的最后一句话,
J1-3 < 0将执行语句20J1-3 = 0语句20也会被执行J1-3 > 0将执行语句21编辑:一种现代且更具可读性的写法是:
if (J1-3 > 0) J1 = J1 - 3
if (J2-3 > 0) J2 = J2 - 3
【讨论】:
if 不是标准 FORTRAN 77 :)
J1>3 至少,如果你知道 J1 没有溢出它的类型。