在Fortran中,有两种标准方法可以从函数返回结果.第一种方法是将函数的返回值赋给函数名.
function foo()
integer :: foo
foo = 10
end function foo
Run Code Online (Sandbox Code Playgroud)
在Fortran 90中标准化的第二种形式是通过"结果"变量.
function foo result(res)
integer :: res
res = 10
end function foo
Run Code Online (Sandbox Code Playgroud)
调用函数的任何一种形式都会返回值10.我的问题是,Fortran 90委员会引入结果变量的理由是什么?他们是否标准化了一种常规做法?或者他们通过不将函数名称绑定到函数结果来允许程序更加模块化.例如,在第二个版本中foo(),函数的名称foo()可以更改为bar(),并且函数在调用时仍将按预期工作.
但是,我可能错了.有谁知道引入结果变量的实际理由是什么?
DO循环如何正常工作?
假设你有以下循环:
do i=1,10
...code...
end do
write(*,*)I
Run Code Online (Sandbox Code Playgroud)
为什么打印I 11,而不是10?
但是当循环停止时由于
if(something) exit
Run Code Online (Sandbox Code Playgroud)
我是预期的(例如i = 7,退出因为其他一些值达到了它的极限).