嵌套循环意外行为
Nested Loop Unexpected Behavior
我正在尝试使用嵌套循环调试我的程序以打印出二维数组中的所有值。我从循环中得到了一些意想不到的行为,所以我注释掉了一些东西并添加了一个简单的 printf。
`int u = 0;
int y = 0;
char m = 'm';
for (u; u < 12; u++)
{
printf("\n");
for (y; y < 5; y++)
{
//transition[u][x] = &m;
printf("o"); //this nested loop isnt working????
//printf("%c", *transition[u][y]);
}
}`
显然这应该打印 12 行 5 个“o”。但相反,它只打印出一行 5 'o's,后跟 11 个换行符。
编辑:非常感谢!愚蠢的错误,我没有意识到 y 不会在循环的第二个 运行 上将自己设置回 0。我想我忽略了这一点,因为我太习惯了 Java 在循环语句中初始化和设置增量变量。
您的 for
初始陈述没有任何意义:
for (y; y < 12; y++)
第一个语句就是y
。它没有副作用,因此您实际上并没有在第一个最内层循环后将 y
重置为 0
。所以从外循环的下一次迭代开始,y == 5
并且根本不执行内循环。
你应该做
for (y = 0; y < 12; y++)
您没有在内部循环中重置 y
;试试 for (y = 0; y < 5; y++)
.
这将在每个循环开始时重置 y
。
p.s。这实际上更像是一个代码审查问题
通过查看您的问题,我假设您正在尝试将 5 个 o 与 12 个 o 排成一行。
试试这个
for(u=0;u<12;u++)
{
for(y=0;y<5;y++)
{
printf("o");
}
printf("\n");
}
我正在尝试使用嵌套循环调试我的程序以打印出二维数组中的所有值。我从循环中得到了一些意想不到的行为,所以我注释掉了一些东西并添加了一个简单的 printf。
`int u = 0;
int y = 0;
char m = 'm';
for (u; u < 12; u++)
{
printf("\n");
for (y; y < 5; y++)
{
//transition[u][x] = &m;
printf("o"); //this nested loop isnt working????
//printf("%c", *transition[u][y]);
}
}`
显然这应该打印 12 行 5 个“o”。但相反,它只打印出一行 5 'o's,后跟 11 个换行符。
编辑:非常感谢!愚蠢的错误,我没有意识到 y 不会在循环的第二个 运行 上将自己设置回 0。我想我忽略了这一点,因为我太习惯了 Java 在循环语句中初始化和设置增量变量。
您的 for
初始陈述没有任何意义:
for (y; y < 12; y++)
第一个语句就是y
。它没有副作用,因此您实际上并没有在第一个最内层循环后将 y
重置为 0
。所以从外循环的下一次迭代开始,y == 5
并且根本不执行内循环。
你应该做
for (y = 0; y < 12; y++)
您没有在内部循环中重置 y
;试试 for (y = 0; y < 5; y++)
.
这将在每个循环开始时重置 y
。
p.s。这实际上更像是一个代码审查问题
通过查看您的问题,我假设您正在尝试将 5 个 o 与 12 个 o 排成一行。
试试这个
for(u=0;u<12;u++)
{
for(y=0;y<5;y++)
{
printf("o");
}
printf("\n");
}