我在一段代码中发现了这个奇怪的语句:
read(10, *) ((matrix(i, j), i=1, n), j=m, 1, -1)
我想知道这种内联递归阅读是如何工作的。是什么意思
((matrix(i, j), i=1, n), j=m, 1, -1)
?
我在一段代码中发现了这个奇怪的语句:
read(10, *) ((matrix(i, j), i=1, n), j=m, 1, -1)
我想知道这种内联递归阅读是如何工作的。是什么意思
((matrix(i, j), i=1, n), j=m, 1, -1)
?
这不是内联递归读取(不确定您从哪里得到这个术语),这是嵌套隐含 do 循环的示例,请参见此处,例如,隐含 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