循环后Fortran DO循环索引的值

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,退出因为其他一些值达到了它的极限).

lur*_*ker 7

的价值i11之前的do循环决定了它必须终止.值的11第一个值i导致1.. 的结束条件10失败.因此,当循环完成,价值i11.

放入伪代码形式:

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的值i11.当你输入你的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如此.