我有一个关于fortran子例程中的循环的问题。
如果我把它作为子例程,那么变量测试就会变成从1到5的数组。
附注:type3
被定义为real, dimension(5,1)
subroutine build(test)
type(typelist) :: test
do i = 1, 5
test%type3(i) = i
end subroutine build
然而,这是一个错误;
||Error: Rank mismatch in array reference (1/2)|
当我删除测试%3后的"(i)“时,它将工作,但结果是5.000 5.000 5.000。因此,它只将最后一个循环中的值分配给数组中的所有条目。如果我删除了%测试,程序就不知道变量测试是什么类型了,它给出了
||Error: Unclassifiable statement |
有人能告诉我我做错了什么吗?
发布于 2014-03-24 10:13:08
你忘记用test%type3(i,1) = i
赋值了吗?
因为type3
是一个2D数组,所以需要两个索引来赋值。当您键入test%type3 = i
时,您将使用相同的值在同一时间分配所有元素。这就是为什么最终你会得到所有的5.0
。
PS。ENDDO
语句在哪里?
https://stackoverflow.com/questions/22617149
复制