If statement 这个If语句是如何工作的?

If statement 这个If语句是如何工作的?,if-statement,fortran,goto,If Statement,Fortran,Goto,我试图自学fortran,这样我就可以解开一个旧程序,重新调整它的用途。我不明白这句话是怎么说的: if(s - fm) 198, 198, 197 s-fm不是一个可以是真或假的条件,对吗 当它将控制权传递到标记为198的行时,它是否会继续到程序的末尾?它如何知道何时再次执行198,然后执行197?这是IF的一种“古老”形式: IF (''arithmeticExpression'') ''firstLineNumber'', ''secondLineNumber'', ''thirdLin

我试图自学fortran,这样我就可以解开一个旧程序,重新调整它的用途。我不明白这句话是怎么说的:

if(s - fm) 198, 198, 197
s-fm
不是一个可以是真或假的条件,对吗

当它将控制权传递到标记为198的行时,它是否会继续到程序的末尾?它如何知道何时再次执行198,然后执行197?

这是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;
}
/*如果(a)标签1、标签2、标签3*/
如果(a>0)
{
后藤标签3;
}否则
if(a<0)
{
后藤标签1;
}否则
{
//a==0
后藤标签2;
}
您的箱子包含两个标签198,其工作原理如下

if(s <= fm) { goto lbl198; } else { goto lbl197; }

if(s这个过时的功能让很多人感到困惑:


是的,我们可能应该使用复制功能。