我试图将英特尔Fortran线下移到gfortran,但我收到以下错误:
DOUBLE PRECISION, DIMENSION(0:0,0:0) :: value = (/ -999D99 /)
Incompatible ranks 2 and 1 in assignment at (1)
如果我理解正确,我们正在创建一个包含1个元素的2-dim数组。我带来了以下修复。这个标准是否符合要求?
DOUBLE PRECISION, DIMENSION(0:0,0:0) :: value = reshape ((/-999D99/), shape(value))
答案 0 :(得分:1)
不允许在不同等级的数组之间进行赋值(即使在初始化中)。因此行
...DIMENSION(0:0,0:0) :: value = (/ -999D99 /)
是非法的。
将右侧重塑为等级2的数组
...DIMENSION(0:0,0:0) :: value = reshape ((/-999D99/), shape(value))
是一种符合标准的解决方案,但更容易分配标量:
...DIMENSION(0:0,0:0) :: value = -999D99
当然,只有你只有1个值才能使用。它将被分配给左侧数组的所有元素。