我正在努力教自己fortran
所以我可以解开一个旧程序并将其重新用于我们自己的用途。我无法弄清楚这句话的作用:
if(s - fm) 198, 198, 197
s - fm
不是一个可以是真或假的条件,对吗?
当它将控制传递给标记为198的行时,它是否继续到程序结束?怎么知道什么时候再回来执行198然后再执行197?
答案 0 :(得分:8)
这是IF的“古老”形式:
IF (''arithmeticExpression'') ''firstLineNumber'', ''secondLineNumber'', ''thirdLineNumber''
在第二种形式中,评估算术表达式。如果表达式求值为负数,则继续执行第一个行号。如果表达式的计算结果为零,则继续执行第二个行号。否则,继续执行第三行编号。
根据表达的符号,这是一个“三向转到”。
在更传统的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; }
参考:wikibooks
答案 1 :(得分:3)