2012-01-06 12 views
0

クイック質問。 Iは変数宣言Fortran変数型変換

DIMENSIONS HH(13, 1000) 

とFORTRAN77サブルーチンを持っている私はタイプが指定されていないので、この変数は整数の配列であると仮定する。その後、プログラム中の私は、次の行が存在しているループを持っている:

HH(2,N) = HH(4,N) + W2 

W2は、明示的サブルーチン内で宣言されていない、またそれは、引数として渡されます。私はそれが実際の変数としてデフォルトでタイプであると仮定します。

上記のコマンドでは、W2がHH(4、N)に追加される前に整数に変換されていると思います。これは正しいです?

これが本当に基本的な場合は謝罪してください。

+0

コードのある部分の暗黙的に型付けされた変数は、「INTEGER」となり、コードの別の部分の暗黙的に型指定された変数は、「REAL」になると思われます。 – talonmies

+0

私は、変数名が "I"と "N"の間の文字で始まる場合を除いて、fortranの変数のデフォルトの型は実際であると読んでいます。私は馬鹿だから、HHがその範囲に入り、Fortranが想定している型変換をどのように処理してC#で複製できるか疑問に思っていました。しかし、あなたは私の混乱をソートしました:o) –

答えて

2

Fortran 77では、I、J、K、L、M、またはNで始まる変数は、別途定義されていない限り、暗黙的にINTEGERです。他のすべての変数は暗黙的にREALです。これはあなたの配列HHがREALであることを意味します。結果は

HH(2,N) = HH(4,N) + W2 

となります。暗黙のキャストは必要ありません。

+0

doh!もちろん。私はアルファベットを知らないようだ...ありがとう! –

+5

これは、Fortran 2008でも有効です。このため、「暗黙のnone」を使用することを強く推奨します。そのため、明示的に変数を入力することを忘れた場合、暗黙の型指定は適用されません。または、gfortranに-fimplicit-noneなどの同じエフェクトのコンパイラオプションを使用します。 –