提出问题“为什么在嵌套 FOR 循环中使用相同的计数变量名称有效?”已经在这个论坛上发布过,在每个嵌套循环中定义的计数变量“i”应该被视为一个新变量,其范围仅限于该循环。我们应该期望该变量的值被“i”的值擦除和覆盖“在外循环中(在控制传递给内循环之前)。但是在我的以下代码中,当控制从内循环出来时,而不是变量“i”的值为0(这是它在外循环的第一次迭代,在控制传递给内循环之前),它继续具有值 10(它在内循环的最后一次迭代中得到)。然后这个 10 增加到 11,因此外循环的条件不满意,外循环退出。
我曾期望我的程序在 10 行不同的行中水平打印数字 0 到 9 10 次。但它只打印一行并退出。
还有另一件事——如果我在外循环条件(i<=10)中使用任何大于 10 的数字,那么它会创建一个无限循环。根据我的推理,它发生是因为我在之后得到了 11 的值外循环的第一次迭代,因此如果条件 <=11 或更多,则外循环进入另一次迭代。于是 i 在内循环中再次初始化为 0,循环继续。
对不起,如果我不能很清楚地提出我的问题。我想问的是,如果我们假设这个论坛上的链接问题是正确的,那么我的内部不应该是一个不同的变量吗?为什么那么值退出内循环后 i 继续保持,而不是恢复到进入内循环时的 i 值?
#include <stdio.h>
int main()
{
int i;
//for (i = 0; i <= 11; i++) Creates infinite loop if this condition is used instead
for (i = 0; i <= 9; i++)
{
for (i = 0; i <= 9; i++)
{
printf("%d ", i);
}
printf("\n");
}
}
OUTPUT : 0 1 2 3 4 5 6 7 8 9
PS:作为第二个问题,如果我们在每个循环中使用相同的计数变量,是否不可能在 10 行不同的行中水平打印数字 0 到 9,就像我在这里所做的那样?(如果与主要问题无关,请忽略此次要问题)