#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);
}
}
有人可以解释一下这种行为吗?
答案 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行的原因。