1

私はコンパイラコースを受講し、現在は試験の練習をしています。取り上げられたトピックの1つは、変動する活気でした。

さて、ループの外で、

1. int a = 1;
2. a++;
3. int b = 2;
4. a = b;

次に、変数「a」は1-2と4に存在しますよね?

ループの内側、

1. for (int i = 1; i < 3; i++)

そして、ループ内で「i」の値を使用する他の操作(値のチェックなど)はありません。「i」は、割り当て/インクリメントの時点でのみ有効です。

基本的に問題は、上記のようなループの場合、制御変数はループ内に存在するのか、それともインクリメントするときだけなのかということです。もちろん、その変数はループ内で使用されます。

4

1 に答える 1

1

変数「a」は1-2と4に存在しますよね?

はい、その通りです。または、通常、変数が特定のステップの後または前に(実行中ではなく)ライブであると話しているので、次のように言う必要があります:aステップ1の後、ステップ2の前、およびステップ4の後にライブです(aこれらの指示の後で使用されると仮定します) 。

上記のようなループの場合、制御変数はループ内に存在しますか、それともインクリメントするときだけですか?

ループの各ステップがいつ発生するかを考える必要があります。ループの実行は次のようになります。

  1. iが初期化されます
  2. 体は実行します
  3. ループ状態がチェックされます(ステップ1で設定されたiの値を読み取ります)
  4. iがインクリメントされます(ループ条件が真であると仮定)
  5. 体が発火する
  6. ループ条件はチェックです(ステップ4で設定されたiの値を読み取ります)
  7. ...条件がfalseになるまで続きます

したがって、本体が実行されるたびに、本体が実行される前に設定されたiの値を読み取ることによって条件がチェックされます。これは、私が体の実行全体を通して生きていなければならないことを意味します。

于 2012-09-01T19:06:02.590 に答える