我正在尝试自学fortran
,这样我就可以解开一个旧程序并将其重新用于我们自己的用途。我无法弄清楚这个语句的作用:
if(s - fm) 198, 198, 197
s - fm
不是可以为真或假的条件,对吗?
当它把控制权交给标记为 198 的行时,它会继续到程序的结尾吗?它怎么知道什么时候回来执行 198 再执行 197?
我正在尝试自学fortran
,这样我就可以解开一个旧程序并将其重新用于我们自己的用途。我无法弄清楚这个语句的作用:
if(s - fm) 198, 198, 197
s - fm
不是可以为真或假的条件,对吗?
当它把控制权交给标记为 198 的行时,它会继续到程序的结尾吗?它怎么知道什么时候回来执行 198 再执行 197?
这是 IF 的“古老”形式:
IF (''arithmeticExpression'') ''firstLineNumber'', ''secondLineNumber'', ''thirdLineNumber''
在第二种形式中,计算算术表达式。如果表达式的计算结果为负数,则从第一行号继续执行。如果表达式的计算结果为零,则在第二行号处继续执行。否则,在第三行号处继续执行。
根据表达式的符号,这是一个“三向 goto”。
在更传统的类 C 语言中,它是
/* IF(a) label1, label2, label3 */
if(a > 0)
{
goto label3;
} else
if(a < 0)
{
goto label1;
} else
{
// a == 0
goto label2;
}
您的案例包含两个标签 198,其工作方式类似于
if(s <= fm) { goto lbl198; } else { goto lbl197; }
参考:维基书