我有一个看起来像这样的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...
}
或者我应该“继续”而不是“返回”?
答案 0 :(得分:10)
是的,GOTO 1301
语句使程序跳转到下一次迭代。
DO label
,label CONTINUE
是编写更现代DO ENDDO
块的过时方式。在这种情况下,循环将迭代DO行上指定的变量,label CONTINUE
行充当“ENDDO
”占位符。