Fortran中的数组声明符,没有下限和上限0

时间:2011-03-09 19:21:46

标签: fortran

根据Fortran标准信息,我可以找到(F77,F90 / 95)一个数组声明符,其中没有下限假定该下限是1.因为上限需要大于或等于下限绑定,这将使以下语句不被允许:

INTEGER A(0)

但是,我不能让ifort和gfortran以任何方式抱怨这句话。编译器是否需要将此标记为错误?

2 个答案:

答案 0 :(得分:5)

  

由于上限需要大于或等于下限,这将使得以下语句不被允许。

来自Fortran 2008 Standard:

  

5.3.8.2显式形状数组
  [...]   3每个下限和上限的值确定数组沿特定维度的边界,从而确定该维度中数组的范围。如果出现下限,则表示下限;否则下限为1.下限或上限的值可以是正数,负数或零。该维度中数组的下标范围是包含下限和上限的整数值的集合,前提是上限不小于下限。 如果上限小于下限,则范围为空,该维度中的范围为零,且数组的大小为零。

答案 1 :(得分:1)

我编码fortran已经有一段时间了,但我似乎记得如果只提供一个数字,它会给出数组的 length (下限和上限隐式变为1和length)。所以你的代码会创建一个零长度的数组。