为什么在 fortran 程序中使用 shape(2) 不打印任何内容?

wan*_*r95 1 fortran gfortran fortran95

考虑以下短程序(Fortran95):

   write(*,*) shape(2)
   end
Run Code Online (Sandbox Code Playgroud)

我尝试使用 Fortran 编译器 (gfortran 4.8.2) 和 Absoft Pro Fortran 13.0.0 (mac) 运行它,我得到以下结果:

local $./a.out 

local $
Run Code Online (Sandbox Code Playgroud)

更新:还尝试了 gfortran 4.4.7(具有相同结果的 linux。

以下是gfortran 中形状的文档说

RESULT = SHAPE(SOURCE [, KIND]) 
Run Code Online (Sandbox Code Playgroud)

参数:
SOURCE 应为任何类型的数组或标量。如果 SOURCE 是一个指针,它必须被关联并且必须分配可分配的数组。

返回值:
秩为 1 的 INTEGER 数组,其元素数与 SOURCE 的维数相同。结果数组的元素对应于 SOURCE 沿各自维度的扩展。如果 SOURCE 是标量,则结果是大小为零的排名一的数组。如果 KIND 不存在,则返回值具有默认整数种类,否则为指定种类。

换句话说,我只看到一个换行符而不是结果。它不应该告诉我形状是 1 吗?

ama*_*rea 5

它正确打印了大小为零的数组shape返回的所有元素。打印长度为零的数组会导致打印零个数字。

秩(维数)为 1,而不是长度。也就是说,结果不是标量、矩阵或某些高阶数组。它是一个向量。它恰好是一个没有元素的向量。