这个If语句如何运作?

tja*_*olz 2 fortran if-statement goto

我正在努力教自己,fortran所以我可以解开一个旧程序并将其重新用于我们自己的用途.我无法弄清楚这句话的作用:

if(s - fm) 198, 198, 197
Run Code Online (Sandbox Code Playgroud)

s - fm 不是一个可以是真或假的条件,对吗?

当它将控制传递到标记为198的行时,它是否会继续到程序结束?怎么知道什么时候再回来执行198然后再执行197?

Vik*_*pov 8

这是IF的"古老"形式:

IF (''arithmeticExpression'') ''firstLineNumber'', ''secondLineNumber'', ''thirdLineNumber''
Run Code Online (Sandbox Code Playgroud)

在第二种形式中,评估算术表达式.如果表达式求值为负数,则继续执行第一个行号.如果表达式的计算结果为零,则继续执行第二个行号.否则,继续执行第三行号.

根据表达的符号,这是一个"三向goto".

用一种更传统的C语言来说就是木头

/* IF(a) label1, label2, label3 */

if(a > 0)
{
   goto label3;
} else
if(a < 0)
{
   goto label1;
} else
{
   // a == 0
   goto label2;
}
Run Code Online (Sandbox Code Playgroud)

您的案例包含两个标签198,其工作方式类似

if(s <= fm) { goto lbl198; } else { goto lbl197; }
Run Code Online (Sandbox Code Playgroud)

参考:wikibooks