考虑以下短程序(Fortran95):
write(*,*) shape(2)
end
我尝试使用Fortran编译器(gfortran 4.8.2)和Absoft Pro Fortran 13.0.0(mac)运行它,我得到以下结果:
local $./a.out
local $
更新:还尝试了gfortran 4.4.7(linux的结果相同。
以下是what documentation of shape in gfortran says:
RESULT = SHAPE(SOURCE [, KIND])
参数:
SOURCE应该是任何类型的数组或标量。如果SOURCE是指针,则必须将其关联,并且必须分配可分配的数组。返回值:
具有与SOURCE一样多的元素的排名为1的INTEGER数组具有维度。结果数组的元素对应于SOURCE沿各自维度的扩展。 如果SOURCE是标量,则结果是大小为零的一级数组。如果缺少KIND,则返回值具有默认的整数种类,否则为指定的种类。
换句话说,我只看到换行符,而不是结果。它不应该告诉我形状是1?
答案 0 :(得分:4)
正确打印size-zero数组shape
返回的所有元素。打印长度为零的数组会导致打印零个数字。
它的等级(维度数)是1,而不是长度。也就是说,结果不是标量或矩阵或某些高阶数组。它是一个载体。它恰好是一个没有元素的向量。