1

C で 2 次元配列を処理しようとしています。ネストされた 2 つの for ループを試しましたが、2 つのループが別々に実行されているようです。外側のループのループごとに内側のループが 8 回ループするので、合計ループ数は外側のループの 8 倍になると予想されます。

簡単なテストとして、私はこれを試しました:

#include <stdio.h>
int main() {
    int x = 0;
    int y = 0;
    for (; x < 7; x++, printf("(%d,%d)", x, y)) {
        for (; y < 8; y++, printf("(%d,%d)", x, y)) { }
    }
}

これにより、次の結果が得られました。

(0,1)(0,2)(0,3)(0,4)(0,5)(0,6)(0,7)(0,8)(1,8)(2,8) (3,8)(4,8)(5,8)(6,8)

誰かが私になぜこれが起こっているのか説明してもらえますか? ありがとう。

4

1 に答える 1

3

理由は簡単です: 内側のループで y 変数を再初期化しません: 変数が 8 に達すると、このままになり、内側のループはそれ以上実行されません。コードを次のように変更します。

#include <stdio.h>
int main() {
    for (x=0; x < 7; x++, printf("(%d,%d)", x, y)) {
        for (y = 0; y < 8; y++, printf("(%d,%d)", x, y)) { }
    }
}
于 2013-08-18T23:22:13.393 に答える