2012-01-06 195 views
0

快速問題。 我有一個子程序FORTRAN77用變量聲明Fortran變量類型轉換

DIMENSIONS HH(13, 1000) 

我假定因爲沒有指定類型,該變量是一個整數數組。在稍後的節目,我有一個循環,其中有如下一行:

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

W2未明確在子程序中聲明,也不是作爲參數傳遞。我假設它是默認的類型作爲一個真正的變量。

我想對於上面的命令,W2在它被添加到HH(4,N)之前轉換爲整數。它是否正確?

道歉,如果這是非常基本的。

+0

出於興趣,您爲什麼認爲代碼的一部分中的隱式類型變量將是'INTEGER',而另一部分代碼中的另一個隱式類型變量將是'REAL'? – talonmies 2012-01-06 05:37:10

+0

我讀到fortran變量的默認類型是真實的,除非變量名以「I」和「N」之間的字母開頭。而且因爲我是個傻瓜,所以HH落入這個範圍並想知道Fortran如何處理假定的類型轉換,所以我可以用C#複製它。但你排除了我的困惑:o) – 2012-01-06 05:46:14

回答

2

在Fortran 77中,除非另有定義,否則以I,J,K,L,M或N開始的變量隱含地爲INTEGER。所有其他變量隱含地爲REAL。這意味着你的陣列HH是REAL。所以結果

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

REAL不涉及隱式投射。

+0

doh!當然。似乎我不知道我的字母表......謝謝! – 2012-01-06 05:36:50

+5

即使在Fortran 2008中,這仍然適用!這就是強烈建議使用「隱式無」的原因,因此如果忘記顯式鍵入變量,隱式類型將不適用。或者對於相同的效果使用編譯器選項,例如gfortran的-fimplicit-none。 – 2012-01-06 07:28:24