2

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

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

但是,它的对应物:

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

没有。该程序仅在 iprobe=202 时运行。

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

4

1 回答 1

3

表格

go to ( 202 ), iprob

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

标签选择是按列表中的顺序进行的。因此,要选择第一个标签,表达式的值应该是1。有了iprob该值202,将选择第 202 个标签(如果存在)。整数表达式超出范围(小于 1,大于列表中的标签数)继续执行到下一行。正如你所拥有的那样,通过 goto 运行。

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

于 2016-08-22T10:02:26.707 回答