2

fortran古いプログラムを解明し、それを自分たちの用途に再利用できるように独学しようとしています。このステートメントが何をするのかわかりません:

if(s - fm) 198, 198, 197

s - fm真か偽かの条件じゃないですか。

そして、198 とマークされた行に制御を渡すと、プログラムの最後まで続くのでしょうか? いつ戻って 198 を実行し、次に 197 を実行するかをどのように知るのでしょうか?

4

2 に答える 2

8

これは IF の「古い」形式です。

IF (''arithmeticExpression'') ''firstLineNumber'', ''secondLineNumber'', ''thirdLineNumber''

2 番目の形式では、算術式が評価されます。式が負の数に評価された場合、実行は最初の行番号から続行されます。式がゼロに評価された場合、実行は 2 番目の行番号から続行されます。それ以外の場合、実行は 3 番目の行番号から続行されます。

表情の符号によっては「三方五島」です。

より伝統的な C ライクな言語では、

/* IF(a) label1, label2, label3 */

if(a > 0)
{
   goto label3;
} else
if(a < 0)
{
   goto label1;
} else
{
   // a == 0
   goto label2;
}

あなたのケースには、次のように機能する2つのラベル198が含まれています

if(s <= fm) { goto lbl198; } else { goto lbl197; }

参考:ウィキブック

于 2012-07-12T20:20:20.800 に答える
3

この廃止された機能は、多くの人を困惑させます。

FORTRAN コンパイラの警告: 廃止された算術 IF ステートメント

Fortran ストレンジ IF

変なラベルの使い方

于 2012-07-12T20:56:03.603 に答える