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?
这是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