下面你可以看到,基于if语句,将跳转到标签305或标签320.当跳转到305时,会有一个continue语句,所以循环结束但跳转时到320是没有继续声明所以这是否意味着它仍然在循环中?
DO 305 I = 1,L
IF (ICHAR(D(I)) - ICHAR("-")) 305,320,305
305 CONTINUE
GO TO 390
320 WRITE (*,*) D(1:L)
答案 0 :(得分:1)
do
构造的范围是(算术)if
语句和标记为continue
的语句。执行continue
语句后,循环的下一次迭代(如果有的话)开始。
continue
本身并不特别:它是一个允许语句终止循环结构(if
语句不允许终止它),没有其他效果,但几乎任何其他可执行语句都将被允许填充该终止角色。特别是,continue
并不代表"开始我们在#34;中的任何一个循环的下一次迭代。
所以:跳转到标记为305
的语句仍然在循环结构中;跳到标有320
的那个离开了循环结构,没有continue
会让我们回到它里面。在后一种情况下,循环终止,i
保留跳转时的值。
[你在一个密切相关的问题的回答中看到了a"现代"这段代码的版本。]
答案 1 :(得分:1)
我认为你可以使这个现代化
DO 305 I = 1,L
IF (ICHAR(D(I)) - ICHAR("-")) 305,320,305
305 CONTINUE
GO TO 390
320 WRITE (*,*) D(1:L)
390 CONTINUE
与
DO I=1,L
IF( ICHAR(D(I))==ICHAR("-") ) THEN
WRITE (*,*) D(1:L)
EXIT
END IF
END DO
EXIT
命令退出内部DO循环,CYCLE
命令在下一次迭代时继续循环。