1

我试图在 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)

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

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 回答