2016-06-28 7 views
1

は、以下の短いプログラム(Fortran95)考えてみましょう:fortranプログラムでshape(2)を使用しても何も印刷されないのはなぜですか?

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は関連付けられていなければならず、割り当て可能な配列を割り当てる必要があります。

戻り値:
SOURCEと同じ数の要素を持つ序数1のINTEGER配列には、次元があります。結果として得られる配列の要素は、それぞれの次元に沿ったSOURCEの長さに対応します。 SOURCEがスカラーの場合、結果はサイズ0のランク1の配列になります。 KINDが指定されていない場合、戻り値にはデフォルトの整数型、それ以外の場合は指定された種類があります。

つまり、改行のみが表示され、結果は表示されません。形が1であると私に教えてはいけませんか?

答えて

4

サイズゼロの配列のすべての要素を正しく出力しています。shapeが返します。長さ0の配列を出力すると、数値がゼロになります。

ランク(次元数)は長さではなく1です。つまり、結果はスカラー、行列またはいくつかの高次の配列ではありません。それはベクトルです。それはちょうど要素のないベクトルです。

+0

また、 'shape([2])'と対比できます。 – francescalus

+0

何も印刷されないのは不思議ではありません。出力のサイズはゼロです!興味深いニュアンスのスタンダード! – wander95

関連する問題