的Fortran做循环内部转到
问题描述:
我有一个的Fortran77片断,看起来像这样:的Fortran做循环内部转到
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...
}
,或者我应该有“继续”,而不是“回归”?
答
是的,GOTO 1301
语句使程序跳转到下一次迭代。
的DO label
,label CONTINUE
是写一个更现代DO ENDDO
块一个过时的方式。在这种情况下,循环将迭代DO行中指定的变量,并且label CONTINUE
行用作“ENDDO
”占位符。
谢谢。要明确这一点,GOTO 1301语句实际上会继续执行循环,直到满足循环终止的条件为止? – 2012-01-05 06:38:33
是的。你的GOTO 1301带你到1301 CONTINUE,这将重复,直到循环结束。 – milancurcic 2012-01-05 06:40:53
优秀。非常感谢,这非常有帮助。 – 2012-01-05 06:42:59