0
int main (int argc, const char * argv[]){

    @autoreleasepool {
        int x = 1;
        for (x = 1; x <= 10; x++)  {
            NSLog(@"%i",x); //the answer here is 10.
        }

        NSLog(@"Number %i",x); //the answer here is 11.
    }

    return 0;
}

私の質問は、for ループの外側に「x」を出力すると、最初の 10 に 1 が追加されるのはなぜですか?

前もって感謝します。

4

6 に答える 6

4

x が 10 を超えると、ループは終了します。したがって、ループを 10 回通過し、1 を追加して 11 を追加し、ループから抜け出します。

于 2012-04-23T18:54:17.543 に答える
2

そうではなく、ループ宣言がそれを追加します。

for (x = 1; x <= 10; x++) {
    // some code
}

のようなものです

x = 1;
while(x <= 10) {
    // some code
x++;
}

x = 11 のとき、ループは停止します。

于 2012-04-23T18:55:00.723 に答える
2

あなたのループは等しい

x = 1;
while(x <= 10)
{
    // log x
    x++;
}

ご覧のとおり、最後の反復 (x = 10) で x がインクリメントされ、その後で初めてループが中断されます。

于 2012-04-23T18:55:48.873 に答える
1

「for」ループは最初に変数 x の値をインクリメントしてから条件と比較するためです。

于 2012-04-23T18:55:07.590 に答える
0

これx++は、最後に成功したループ反復の後に step 句が実行されるためです。それが停止することを知っている方法です。

  1. x = 1、次に 10 回ループし、そのたびにインクリメントします。
  2. に到達しx = 10、ループ本体が最後に実行されます。
  3. step句が実行x++され、今x = 11
  4. ループ条件x <= 10を確認します。現在は false であり、ループは終了します。

11 に達しなかった場合x、このループを終了するタイミングがわかりません。

于 2012-04-23T18:57:38.520 に答える
0

ループは 1 から 10 まで 10 回繰り返され、ループが終了すると x の値は 11 になります。

于 2012-04-23T18:57:57.740 に答える