我do在我正在使用的旧代码中遇到了嵌套结构,并希望理解和现代化。它使用相同的标记动作语句来终止do循环,以及go to语句。这是一个简化版本,它通过一些其他微不足道的操作说明了原始代码的逻辑:
subroutine original(lim)
k=0
do 10 i=1,4
do 10 j=1,3
k=k-2
if (i>lim) go to 10
k=k+i*j
10 k=k+1
write(*,*) k
return
end
Run Code Online (Sandbox Code Playgroud)
在查看此站点上的其他问题
(和外部资源)后,这是我重写原始代码逻辑的最大努力,没有过时的功能(和):go to
subroutine modern(lim)
integer, intent(in) :: lim
integer :: i, j, k
k=0
outer: do i=1,4
inner: do j=1,3
k=k-2
if (i>lim) then
k=k+1
cycle inner
end if
k=k+i*j
k=k+1
end do inner
end do outer
write(*,*) k
end subroutine modern
Run Code Online (Sandbox Code Playgroud)
我使用以下程序测试了代码,包括触发/不触发go to …
fortran ×1