why*_*n0t 2 fortran loops do-loops
DO循环如何正常工作?
假设你有以下循环:
do i=1,10
...code...
end do
write(*,*)I
Run Code Online (Sandbox Code Playgroud)
为什么打印I 11,而不是10?
但是当循环停止时由于
if(something) exit
Run Code Online (Sandbox Code Playgroud)
我是预期的(例如i = 7,退出因为其他一些值达到了它的极限).
的价值i去11之前的do循环决定了它必须终止.值的11第一个值i导致1.. 的结束条件10失败.因此,当循环完成,价值i为11.
放入伪代码形式:
1) i <- 1
2) if i > 10 goto 6
3) ...code...
4) i <- i + 1
5) goto 2
6) print i
Run Code Online (Sandbox Code Playgroud)
当它到达步骤6的值i是11.当你输入你的if陈述时,它变为:
1) i <- 1
2) if i > 10 goto 7
3) ...code...
4) if i = 7 goto 7
5) i <- i + 1
6) goto 2
7) print i
Run Code Online (Sandbox Code Playgroud)
在这种情况下显然i也是7如此.