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

时间:2016-06-28 19:18:42

标签: fortran gfortran fortran95

考虑以下短程序(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?

1 个答案:

答案 0 :(得分:4)

正确打印size-zero数组shape返回的所有元素。打印长度为零的数组会导致打印零个数字。

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