我在一段代码中发现了这个奇怪的陈述:
read(10, *) ((matrix(i, j), i=1, n), j=m, 1, -1)
我想知道这个内联递归阅读是如何工作的。的意义是什么
((matrix(i, j), i=1, n), j=m, 1, -1)
?
答案 0 :(得分:3)
这不是内联递归读取(不确定从哪里获得此术语),这是嵌套隐含do循环的示例,请参阅{例如,{3}}隐含的do循环的语法和许多这些实例的例子。基本上,隐含的do循环是在单行上写do循环的一种方法。使用嵌套的隐含do循环,您可以在一行上编写多个do循环。
在你的情况下,你所拥有的相当于(有人请在这里纠正我,如果OP应该注意到任何差异)这样的事情(注意我已经从外部循环向内揭开了隐含的do循环) :
integer, parameter :: n=<some-value>
integer, parameter :: m=<some-value>
<some-type>, dimension(n,m) :: matrix
integer :: i, j
do j = m,1,-1
do i = 1,n
read(10,*) matrix(i,j)
end do
end do