在Fortran中循环之后确定循环控制变量的值

时间:2017-04-04 15:25:29

标签: fortran

我有以下程序:

program example
implicit none
integer::i, x1
real::x(10)=0
do i=10,1,-2
  x(10-i)=2*i+1
enddo
x1=i*2-1
end program example

我的问题是确定x1的值,但由于从未输入或指定变量i,Fortran如何确定i在计算{{1}时使用的值}}?

1 个答案:

答案 0 :(得分:3)

"因为从未输入或指定变量i"

这个假设是错误的。循环内部i采用精确定义的值10,8,6,4,2。

循环结束后,Fortran标准指定i的值应为循环计数器的下一个值,就好像循环仍在继续,因此i的值将为{{ 1}}。

因此0的值将为0 * 2 - 1 = -1,并且可以通过在程序结尾添加x1来轻松验证。

但是francescalus发现你的程序存在不同的问题。在第一次迭代中,print *, x1的值为10,您正在访问i x(10-i)。此元素不存在,x(0)只包含xx(1)的元素,因此访问x(10)是非法的,并且在该点之后整个程序的行为未定义。