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 中形状的文档说:
Run Code Online (Sandbox Code Playgroud)RESULT = SHAPE(SOURCE [, KIND])参数:
SOURCE 应为任何类型的数组或标量。如果 SOURCE 是一个指针,它必须被关联并且必须分配可分配的数组。返回值:
秩为 1 的 INTEGER 数组,其元素数与 SOURCE 的维数相同。结果数组的元素对应于 SOURCE 沿各自维度的扩展。如果 SOURCE 是标量,则结果是大小为零的排名一的数组。如果 KIND 不存在,则返回值具有默认整数种类,否则为指定种类。
换句话说,我只看到一个换行符而不是结果。它不应该告诉我形状是 1 吗?
它正确打印了大小为零的数组shape返回的所有元素。打印长度为零的数组会导致打印零个数字。
秩(维数)为 1,而不是长度。也就是说,结果不是标量、矩阵或某些高阶数组。它是一个向量。它恰好是一个没有元素的向量。