维度如何在Fortran中运行

Lev*_* K. 3 arrays fortran declare

我不明白为什么

IMPLICIT REAL*8(A-Z)
DIMENSION A(20)
Run Code Online (Sandbox Code Playgroud)

编译好,并且

REAL*8, DIMENSION A(20)
Run Code Online (Sandbox Code Playgroud)

导致错误

缺少尺寸规格......

fra*_*lus 5

这是两个不同的含义dimension.第一个是dimension声明,第二个是指dimension在声明中指定属性.

在指定属性的声明中,必须具有:::

REAL*8, DIMENSION(20) :: A
Run Code Online (Sandbox Code Playgroud)

另请注意,数组规范附加到dimension变量名称,而不是附加到变量名称.

::dimension声明中使用仅仅是可选的(Fortran 77中除外,不允许使用).

但是,它只是允许写

real*8 A(20)
Run Code Online (Sandbox Code Playgroud)

因为dimension属性也是通过给出数组规范来指定的.


值得注意的是,由于问题中的声明行不正确,因此在固定形式的源中,错误是不同的.

在固定形式的源中,空格不是注意的(超出列布局),所以

      real*8, dimension a(20)
Run Code Online (Sandbox Code Playgroud)

是声明

      real*8 dimensiona(20)
Run Code Online (Sandbox Code Playgroud)

带有一个无关的逗号.