Fortran 2D阵列初始化

时间:2012-05-11 18:24:40

标签: fortran gfortran intel-fortran

以下程序使用ifort(版本12)进行编译,但不使用GFortran编译(最高版本为4.8):

PROGRAM TEST
IMPLICIT NONE
REAL,DIMENSION(2,2)::X=(/1,2,3,4/)

WRITE(*,*) X

END PROGRAM TEST

GFortran给出错误

REAL,DIMENSION(2,2)::X=(/1,2,3,4/)  
                       1  
Error: Incompatible ranks 2 and 1 in assignment at (1)

Ifort编译程序并给出预期的输出。这是GFortran中的错误还是intel fortran只允许非标准数组初始化?

1 个答案:

答案 0 :(得分:7)

将数组声明行重写为:

REAL,DIMENSION(2,2) :: X = RESHAPE([1,2,3,4],[2,2])

ifort以另一种方式编译它的原因是非标准实现。这是一种可以初始化排名高于1的数组的方法。