我有以下程序:
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
用于计算x1
?
“因为变量i
从未输入或指定”
这个假设是错误的。在循环内部i
采用精确定义的值 10、8、6、4、2。
循环结束后,Fortran 标准指定i
应为循环计数器的下一个值,就好像循环仍在继续一样,因此i
将0
.
所以价值x1
将是 0*2 - 1 = -1 并且可以通过添加轻松验证print *, x1
在程序的最后。
但正如 francescalus 发现的那样,您的程序存在另一个问题。第一次迭代时的值i
是 10 并且您正在访问x(10-i)
这是x(0)
。该元素不存在,x
仅包含来自的元素x(1)
to x(10)
所以访问x(0)
是非法的,并且该点之后整个程序的行为是未定义的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)