嵌套for循环似乎由于某种原因单独执行

时间:2013-08-18 23:17:34

标签: c for-loop nested

我正在尝试在C中处理一个二维数组。我尝试了两个嵌套for循环,但似乎这两个循环分别执行。我希望内部循环对于外部循环的每个循环循环八次,导致外部循环数的八倍是循环的总数。

作为简化测试,我试过这个:

#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)

有人可以向我解释为什么会发生这种情况吗?感谢。

1 个答案:

答案 0 :(得分: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)) { }
    }
}