Fortran 多重循环下的 exit 与 goto 语句
2023-12-29 14:55 更新
一般来说在复杂的行列式计算中经常会遇到多重循环,这与以上 goto 和 exit 语句的场景稍显不同。goto 语句的跳转行因为可以指定任何一行,所以不会被多重循环影响,可以直接跳转到多重循环之外或者某一重循环之中的某一行,如示例 17 所示。而 exit 语句如果还是按照上面的用法每次只能退出一重循环,碰到需要同时退出多重循环时就比较麻烦。所以 Fortran 语言为了尽量避免这一问题,就给 exit 语句添加一种类似于 goto 语句指示跳转行的方法 exit out,如示例 18 所示。
!!! 示例 17
sum = 0
do i = 1, 10
do j = 1, 10
sum = sum + i + j
if (sum > 10) go 10
enddo
enddo
10 print *, i, j, sum ! 输出 i 的值为 1,j 的值为 4,sum 的值为 11
!!! 示例 18
sum = 0
out: do i = 1, 10
do j = 1, 10
sum = sum + i + j
if (sum > 10) exit out
enddo
enddo out
print *, i, j, sum ! 输出 i 的值为 1,j 的值为 4,sum 的值为 11
这里需要注意的是,当使用
exit out
方法时,out 是对应于循环的一个别名,需要同时在 do 前和 enddo 后添加 out 的声明。当然,这里的别名也可以使用其他符合规则的字符串,只要不与同一个代码文件中的其他别名或变量名等相同即可。
以上内容是否对您有帮助:
更多建议: