0

gfortran エラーがあります:

Warning: Obsolete: arithmetic IF statement at (1) 

これは何を意味するのでしょうか?ソース (古いソース) では:

66 s12 = max(epsilon, s1 + s2)
c Then execution will go to label 13. Will this stop any further problems?
if (s12 - 1.0) 13, 13, 12
13 z = s1 / s12
4

3 に答える 3

0

ここをチェックしてください:

http://www.ibiblio.org/pub/languages/fortran/ch1-5.html

「算術 IF は有害と見なされます。」

あなたの発言、

if (s12 - 1.0) 13, 13, 12は算術 IF であり、不適切なプログラミングと見なされます。

于 2012-05-25T17:39:28.243 に答える
0

算術 if は FORTRAN 特有の機能です

次のように動作します。

 IF (expr) label1, label2, label3

式の値が

less than 0, jump to label1 
equal to 0, jump to label2
greater than 0, jump to label3

新しい FORTRAN 標準では、この機能は廃止されています。

あなたのコードでは、それを置き換えることができます

      IF (s12 - 1.0 .gt. 0 ) GOTO 12
13    z = s1 / s12
于 2012-05-25T17:41:10.263 に答える
0

ウィキペディアの引用

「..Fortran ステートメントは、式の結果が負、ゼロ、正のいずれであるかに応じて、この順序で 3 つの異なる分岐を定義します...」

「..Fortran 90 では、最終的に旧式のラベルが付けられました。」

于 2012-05-25T17:41:21.973 に答える