我有以下程序:
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}时使用的值}}?
答案 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)
只包含x
到x(1)
的元素,因此访问x(10)
是非法的,并且在该点之后整个程序的行为未定义。