嵌套for循环,在循环外部进行初始化

时间:2015-08-03 17:57:10

标签: c nested-loops

#include <stdio.h>

int main()
{
    int i = 1, j = 1;

    for(i; i<=5; i++)
    {
        for(j; j<=5; j++)
        {
            printf("%d - %d\n",i, j);
        }
    }
    return 0;
}

上面的代码只运行一次外部for循环。 输出是:

1 - 1
1 - 2
1 - 3
1 - 4
1 - 5

但是当我进行以下更改时,printfs会打印预期的25次。

    for(i=1; i<=5; i++)
    {
        for(j=1; j<=5; j++)
        {
            printf("%d - %d\n",i, j);
        }
    }

有人可以解释一下这种行为吗?

2 个答案:

答案 0 :(得分:7)

i的第二次迭代中简单(i=2时)j的值为6,因此第二次(嵌套的)for永远不会运行。但是在第i次迭代的第二种情况下,j被初始化为1

答案 1 :(得分:1)

i循环按预期运行了5次,但是你的j循环只运行了第一次迭代。
在你的第一个例子中,j var增加到6,然后再也没有运行(因为6 = / =&lt; = 5)。

当你将j循环更改为(j = 1; ...)时,每次i循环运行时它会运行5次,这就是你输出25行的原因。