2017-04-04 77 views
2
循環後確定的循環控制變量的值

我有以下程序:在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的值用於計算x1

回答

3

「自變量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)x(10)的元素,因此訪問x(0)是非法的,並且該點之後的整個程序的行爲未定義。

+0

很公平,是的,整個程序變得無效。我實際上玩過代碼,但從來沒有啓用邊界檢查,認爲代碼太微不足道了。 –