Fortran内联读取的含义是什么?

时间:2012-10-28 17:20:02

标签: fortran

我在一段代码中发现了这个奇怪的陈述:

read(10, *) ((matrix(i, j), i=1, n), j=m, 1, -1)

我想知道这个内联递归阅读是如何工作的。的意义是什么 ((matrix(i, j), i=1, n), j=m, 1, -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