2
如果存在iostat
關鍵字,則發生I/O錯誤時程序不會停止。然後,如果我嘗試將不正確的值讀入標量變量,那麼i
會說這個變量保持不變嗎?以下似乎工作:將不正確的值讀入變量的嘗試是否會改變其值?
program test
integer :: i, stat
i = 1
do
write (*, "('i = ')", advance='no')
read (*, *, iostat=stat) i
if (stat .eq. 0) then
write (*, "('Valid integer. i has been set to ', I0)") i
else
write (*, "('Bad integer. i is still ', I0)") i
end if
end do
end program test
我可以在Fortran 2003中依賴此行爲嗎?
僅僅是因爲某個編譯器(在我的情況gfortran)上述代碼的行爲,而不是因爲標準(我找不到任何東西)的行爲? – 2015-02-11 11:15:06
是的,但即使使用相同的編譯器,在另一種情況下也可能會失敗。閱讀F2008標準中的全部9.11節。 – 2015-02-11 11:15:43
現在我也在Fortran 2003,9.10.1中找到了這個。謝謝! – 2015-02-11 11:28:54