(c++) For循环-为什么它这样做

(C++) For loop - why does it do this?

本文关键字:为什么 这样做 循环 c++ For      更新时间:2023-10-16

我是一个c++的学生,我有一些麻烦理解为什么这个for循环:

for (int i=0; i<5; i++)
{
    for (int j=0; j<5; j++)
    {
        cout << i << endl;
    }
}

显示如下输出:0000011111222223333344444

我理解外循环是在内循环完成后执行的。但是,如果是这样的话,输出不应该看起来像01234012340123401234吗?如果内循环必须先完成,为什么它没有这种模式呢?

因为您打印的不是内部循环的变量j,而是外部循环的变量i。否则,输出将与您预测的一样。div;)

您正在内循环中打印i。如果您打印的是j,那么它将是0123401234012340123401234

由于显示的变量是i而不是j,因此i在内循环中显示5次,然后在外循环中更改其值。

我理解外循环在内循环完成后执行。但是,如果是这样的话,输出不应该看起来像01234012340123401234吗?如果内循环必须先完成,为什么它没有这种模式呢?

不,外部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...

按别人说的做,如果你需要代码,你改一个字母:

for (int i=0; i<5; i++) {
    for (int j=0; j<5; j++) {
        cout << j << endl;
    }
}

我还把大括号和for语句放在同一行,这在运行方面绝对没有区别,但我认为它看起来更干净,它使你的代码看起来更短。

您将得到所需的输出,如果您只需更改:

cout << i << endl;

cout << j << endl;

另外,关于样式,在for循环中考虑将i++j++更改为++i++j。为什么,从c++常见问题中可以看到13.15哪个更有效:i++还是++i?:

摘录:

旧的行C程序员习惯于写i++而不是++i。例如,他们会说,for (i = 0; i < 10; i++) ....因为这使用i++作为语句,而不是作为更大表达式的一部分,那么您可能需要改为使用++i。对于对称,我个人提倡这种风格即使不能提高速度,…