-2

このコードの何が問題なのか誰か知っていますか?

int squareOf = 1500;
int squarer = 1;

    for(int i = 0;i <= squareOf; i++){

        for(;squarer <= i; squarer++){

            if(i / squarer == 0){
                NSLog(@"%i",i);
            }
        }

何も出力しないだけで、エラーは発生しません。理由を知っている人はいますか?痛々しいほど明白である場合は申し訳ありませんが、私はプログラミングにまったく慣れていません。

4

2 に答える 2

0

最初の繰り返しでは、内側のループは開始されません。これsquarerは is 1 であり、i0 であるため、for 条件が満たされることはありません。

2 番目の繰り返しでは、内側のループが 1 回実行されます。これは、 is 1 であり、1 であるためiですsquareri/squareris 1 であるため、何も出力されません。

3 番目のループの間、squarerすでに 2 (前のループでインクリメント)iが 2 であるため、ループは 1 回実行され、i/squarer再び 1 になります。

他のすべてのループで何が起こるかは簡単に想像できます:iは常に に等しくsquareri/squarerは常に 1 です。この目的で 2 つの入れ子になったループを使用してもまったく意味がありません。次のコードを参照してください。

int squareOf = 1500;
int squarer = 1;
for(int i=1; i<=squareOf; i++) {
    if(i / squarer == 0)
        NSLog(@"%i",i);
    else
        NSLog(@"i/squarer is not zero");
}

これは同等であり、i/squarerゼロになることはありません。わかりやすくするためにログステートメントを追加しました。i/squarerこれで、なぜ常に 1 であるかがわかりましたか? 別のコードを書くつもりだった場合は、何を達成しようとしているのか教えてください。コードを修正することができます。

于 2013-09-25T15:22:11.553 に答える