我正在尝试使用嵌套循环调试我的程序,以打印出2d数组中的所有值。我从循环中得到了一些意想不到的行为,所以我评论了一些东西并添加了一个简单的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初始化并在循环语句中设置增量变量。
答案 0 :(得分:1)
您的for
初始声明并不代表任何内容:
for (y; y < 12; y++)
第一个陈述只是y
。这没有任何副作用,因此您在第一个最内层循环后实际上并未将y
重置为0
。因此,从外部循环的下一次迭代,y == 5
和内部循环根本不执行。
你应该做
for (y = 0; y < 12; y++)
答案 1 :(得分:1)
您没有在内循环中重置y
;试试for (y = 0; y < 5; y++)
。
这将在每个循环开始时重置y
。
P.S。这实际上是一个代码审查问题
答案 2 :(得分:1)
通过查看您的问题,我假设您正试图在12行中打印5个。
试试这个
for(u=0;u<12;u++)
{
for(y=0;y<5;y++)
{
printf("o");
}
printf("\n");
}