我在 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/