根据Fortran标准信息,我可以找到(F77,F90 / 95)一个数组声明符,其中没有下限假定该下限是1.因为上限需要大于或等于下限绑定,这将使以下语句不被允许:
INTEGER A(0)
但是,我不能让ifort和gfortran以任何方式抱怨这句话。编译器是否需要将此标记为错误?
答案 0 :(得分:5)
由于上限需要大于或等于下限,这将使得以下语句不被允许。
来自Fortran 2008 Standard:
5.3.8.2显式形状数组
[...] 3每个下限和上限的值确定数组沿特定维度的边界,从而确定该维度中数组的范围。如果出现下限,则表示下限;否则下限为1.下限或上限的值可以是正数,负数或零。该维度中数组的下标范围是包含下限和上限的整数值的集合,前提是上限不小于下限。 如果上限小于下限,则范围为空,该维度中的范围为零,且数组的大小为零。
答案 1 :(得分:1)
我编码fortran已经有一段时间了,但我似乎记得如果只提供一个数字,它会给出数组的 length (下限和上限隐式变为1和length
)。所以你的代码会创建一个零长度的数组。