【问题标题】:How works this If statement? [duplicate]这个 If 语句是如何工作的? [复制]
【发布时间】:2012-07-12 16:17:27
【问题描述】:

我正在尝试自学fortran,这样我就可以解开一个旧程序并将其重新用于我们自己的用途。我不知道这个语句是做什么的:

if(s - fm) 198, 198, 197

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

当它把控制权交给标记为 198 的行时,它会继续到程序的结尾吗?它怎么知道什么时候回来执行 198 再执行 197?

【问题讨论】:

    标签: if-statement fortran goto


    【解决方案1】:

    【讨论】:

    • 是的,我们可能应该使用复制功能。
    【解决方案2】:

    这是 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; }
    

    参考:wikibooks

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 2017-05-28
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      相关资源
      最近更新 更多