2

Fortran 77 コード (gfortran コンパイラ) で奇妙な動作に遭遇しました。次の行は完全に機能します (iprob=202 のラベル 202 にジャンプします)。

      if( iprob .eq. 202 ) goto 202
      !...some commands...
  202 continue

ただし、その対応物:

      GO TO ( 202 ), iprob
      !...some commands...
  202 continue

しません。プログラムは iprob=202 で実行されます。

多分誰かがその問題について考えを持っていますか?

4

1 に答える 1

3

フォーム

go to ( 202 ), iprob

計算された go to ステートメントです。このようなステートメントには、ラベルのリスト (ここでは 1 つだけ) と、ラベルを選択202する整数式 (ここでは) があります。iprob

ラベルの選択は、リスト内の順序で行われます。したがって、最初のラベルを選択するには、式の値を にする必要があります1iprob値があると202、202 番目のラベル (存在する場合) が選択されます。整数式が範囲外 (1 未満、リスト内のラベル数より大きい) の場合、実行は次の行に進みます。お持ちのように、後藤を駆け抜けます。

ラベルが式の値によって決定される割り当てられた go to ステートメントを考えているかもしれません。ただし、これは Fortran 標準の一部ではないため、詳細には触れません。

于 2016-08-22T10:02:26.707 に答える