【问题标题】:Why does using shape(2) in fortran programs not print anything?为什么在 fortran 程序中使用 shape(2) 不打印任何内容?
【发布时间】:2016-10-31 06:36:36
【问题描述】:

考虑以下短程序 (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 是一个指针,它必须是关联的并且必须分配可分配的数组。

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

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

【问题讨论】:

    标签: fortran gfortran fortran95


    【解决方案1】:

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

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

    【讨论】:

    • 可以和shape([2])对比。
    • 难怪它不打印任何东西。输出的大小为零!标准中有趣的细微差别!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多