ifort -> gfortran: array - 在 (1) 处的赋值中排名 2 和 1 不兼容
ifort -> gfortran: array - Incompatible ranks 2 and 1 in assignment at (1)
我正在尝试从 Intel Fortran 行下方移动到 gfortran,但出现以下错误:
DOUBLE PRECISION, DIMENSION(0:0,0:0) :: value = (/ -999D99 /)
Incompatible ranks 2 and 1 in assignment at (1)
如果我没理解错的话,我们正在创建一个包含 1 个元素的二维数组。我带来了以下修复。这个标准符合吗?
DOUBLE PRECISION, DIMENSION(0:0,0:0) :: value = reshape ((/-999D99/), shape(value))
不允许在不同秩的数组之间进行赋值(即使在初始化时)。因此行
...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 个值时才有效。它将分配给左侧数组的所有元素。
我正在尝试从 Intel Fortran 行下方移动到 gfortran,但出现以下错误:
DOUBLE PRECISION, DIMENSION(0:0,0:0) :: value = (/ -999D99 /)
Incompatible ranks 2 and 1 in assignment at (1)
如果我没理解错的话,我们正在创建一个包含 1 个元素的二维数组。我带来了以下修复。这个标准符合吗?
DOUBLE PRECISION, DIMENSION(0:0,0:0) :: value = reshape ((/-999D99/), shape(value))
不允许在不同秩的数组之间进行赋值(即使在初始化时)。因此行
...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 个值时才有效。它将分配给左侧数组的所有元素。