我是C ++的学生,我很难理解为什么这个循环:
for (int i=0; i<5; i++)
{
for (int j=0; j<5; j++)
{
cout << i << endl;
}
}
显示输出:0000011111222223333344444
我知道外循环在内循环完成后执行。但是,如果是这样的话,输出看起来不会像0123401234012340123401234吗?如果内循环必须先完成,为什么不具有那种模式呢?
答案 0 :(得分:3)
因为你没有打印j
,内循环的变量,但是i
,来自外循环的变量。否则,输出将与您预测的一样。 ;)
答案 1 :(得分:3)
您正在内循环中打印i
。如果您正在打印j
,那么它将是0123401234012340123401234
。
答案 2 :(得分:3)
因为显示的变量是i
而不是j
,所以i
在内循环中显示5次,然后在外循环中更改其值。
答案 3 :(得分:2)
我知道外循环在内循环完成后执行。但是,如果是这样的话,输出看起来不会像0123401234012340123401234吗?如果内循环必须先完成,为什么它没有那个模式?
不,外部for()正常执行。但是对于外部for()的每个循环,它执行整个内部for()。
Outer for(), loop 1:
i = 0;
Inner for(), loop 1-5:
Print "i" (which is 0) five times. ("00000")
Outer for(), loop 2:
i = 1;
Inner for(), loop 1-5:
Print "i" (which is 1) five times. ("11111")
Outer for(), loop 3: etc...
答案 4 :(得分:0)
做其他人所说的话,如果你需要代码,你改了一个字母:
for (int i=0; i<5; i++) {
for (int j=0; j<5; j++) {
cout << j << endl;
}
}
我还将开括号放在与for语句相同的行上,它在运行方面完全没有区别,但我认为它看起来更干净,并且它使你的代码看起来更短。
答案 5 :(得分:0)
如果您只是更改:
,您将获得所需的输出cout << i << endl;
...至
cout << j << endl;
另外,关于样式,请在for
循环中考虑将i++
和j++
更改为++i
和++j
。出于这个原因,从C ++常见问题解答中可以看到13.15 Which is more efficient: i++ or ++i? :
<强>摘录:强>
旧的C语言程序员习惯于编写
i++
而不是++i
。例如。, 他们会说,for (i = 0; i < 10; i++)
....因为它使用i++
作为 语句,而不是更大表达的一部分,那么你可能想要 改为使用++i
。为了对称,我个人主张那种风格 即使它没有提高速度,......