Fortran 2D阵列初始化

use*_*070 4 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
Run Code Online (Sandbox Code Playgroud)

GFortran给出了错误

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

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

mil*_*cic 7

将数组声明行重写为:

REAL,DIMENSION(2,2) :: X = RESHAPE([1,2,3,4],[2,2])
Run Code Online (Sandbox Code Playgroud)

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