【问题标题】:Nested for loops seem to execute separately for some reason由于某种原因,嵌套的 for 循环似乎单独执行
【发布时间】:2013-08-20 16:56:11
【问题描述】:

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

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

【问题讨论】:

    标签: c for-loop nested


    【解决方案1】:

    原因很简单:你没有在内部循环中重新初始化 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)) { }
        }
    }
    

    【讨论】:

    • 哦。非常感谢!那只是我知道我必须犯的明显错误类型。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多