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