11

我有一个如下所示的 Fortran77 片段:

    DO 1301 N=NMLK-2,2,-1                                                     
       Some code...
       IF(NB1(N).EQ.50) GOTO 1300                                                            
       Some code...
       IF(BS(N).EQ.0.0) GOTO 1301                                                
       some code...                                                               
       GOTO 1301                                                                 
  1300 NW(M)=NB1(N)                                                              
       Some code...                                                               
  1301 CONTINUE

当它到达 GOTO 1301 语句时,它是跳转到循环的下一次迭代还是退出循环?据我了解,return 关键字什么都不做,所以我假设这只会退出循环并从标签 1301 继续执行代码,对吗?

我正在将其翻译为 C#,并想知道这是否等效:

for (N = NMLK; N >= 2; N--)
{
    Some code...
    if (NB1[N] == 50)
        goto l1300;
    Some code...
    if (BS[N] == 0)
        return;
    Some code...
    return;
l1300:
    NW[M] = NB1[N];
    Some code...
}

或者如果我应该“继续”而不是“返回”?

4

1 回答 1

11

是的,该GOTO 1301语句使程序跳转到下一次迭代。

,是编写更现代的块的过时DO label方式。在这种情况下,循环将遍历 DO 行上指定的变量,并且line 用作“ ”占位符。label CONTINUEDO ENDDOlabel CONTINUEENDDO

于 2012-01-05T06:34:08.253 回答