ifort - > gfortran:array - 在(1)的赋值中不兼容的等级2和1

时间:2015-08-06 09:02:21

标签: arrays fortran gfortran intel-fortran

我试图将英特尔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))

1 个答案:

答案 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个值才能使用。它将被分配给左侧数组的所有元素。