在 do-loop 中跳过迭代 (fortran)
Skip iterations in a do-loop (fortran)
我想循环 N 次迭代,但某些迭代在特定条件下应该是 "skipped"。
我知道我可以使用 goto
语句来做到这一点,例如:
do i = 1, N
if condition(i) goto 14
! Execute my iteration if condition(i) is false
14 continue
end do
但我有点害怕这些 goto
语句,我想知道是否有其他解决方案(我使用的是 fortran 90,但对任何解决方案都感兴趣,即使它需要较新的版本)。
试试这个
do i = 1, N
if (condition(i)) cycle
! Execute my iteration if condition(i) is false
end do
如果您需要解释,请评论您需要澄清的内容。请注意,我已经删除了陈旧的 continue
和标记语句。
你也可以这样:
do i = 1, N
if ( .not. condition(i) ) then
! Execute my iteration if condition(i) is false
endif
end do
我想循环 N 次迭代,但某些迭代在特定条件下应该是 "skipped"。
我知道我可以使用 goto
语句来做到这一点,例如:
do i = 1, N
if condition(i) goto 14
! Execute my iteration if condition(i) is false
14 continue
end do
但我有点害怕这些 goto
语句,我想知道是否有其他解决方案(我使用的是 fortran 90,但对任何解决方案都感兴趣,即使它需要较新的版本)。
试试这个
do i = 1, N
if (condition(i)) cycle
! Execute my iteration if condition(i) is false
end do
如果您需要解释,请评论您需要澄清的内容。请注意,我已经删除了陈旧的 continue
和标记语句。
你也可以这样:
do i = 1, N
if ( .not. condition(i) ) then
! Execute my iteration if condition(i) is false
endif
end do