fortran - 计算的 GOTO 无法执行

标签 fortran goto fortran77 go-to-definition

我在 Fortran 77 代码(gfortran 编译器)中遇到奇怪的行为, 以下行完美运行(对于 iprob=202 跳转到标签 202):

      if( iprob .eq. 202 ) goto 202
      !...some commands...
  202 continue

然而,它的对应部分:

      GO TO ( 202 ), iprob
      !...some commands...
  202 continue

没有。程序刚刚运行完 iprob=202。

也许有人对这个问题有想法?

最佳答案

表格

go to ( 202 ), iprob

是一个计算的 go to 语句。在这样的语句中,有一个标签列表(这里只有一个202)和一个选择标签的整数表达式(这里是iprob)。

标签选择是按列表中的顺序进行的。因此,要选择第一个标签,表达式的值应为 1。如果 iprob 的值为 202,则将选择第 202 个标签(如果存在)。如果整数表达式超出范围(小于 1,大于列表中标签的数量),则继续执行下一行。运行 goto,如您所知。

您可能正在考虑分配的 go to 语句,其中标签由表达式的值确定。不过,我不会详细介绍这一点,因为它不再是 Fortran 标准的一部分。

关于fortran - 计算的 GOTO 无法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39075863/

相关文章:

loops - 为什么我的程序会以无限循环结束?

algorithm - 使用 goto 与运行时代码评估

c - 为什么下面的代码会进入死循环?

c++ - 为什么在 constexpr 函数中不允许 goto?

从 C 包装器调用 FORTRAN 函数

指向派生类型子例程的 Fortran 过程指针

linker - 未定义的引用,将 Plplot 与 GFortran 链接时出错

fortran - 在参数中使用交替符号求和

compilation - 多个系统上的 Fortran 编译

string - 错误 : Unterminated character constant beginning at (1)