(c++) For循环-为什么它这样做
(C++) For loop - why does it do this?
我是一个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
。对于对称,我个人提倡这种风格即使不能提高速度,…
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 为什么在C++中对链表这样做?(像堆叠一样处理它们)
- C++ 如果在 if 为 true 之后运行,为什么还会这样做
- 为什么 arr[i++] 与 arr[i]++ 会这样做?
- std::字符串 's' 通过 '&s[0]' 转换为字符* - 如何/为什么这样做?
- C++子字符串为什么这样做
- C++循环、作用域和堆栈(为什么这样做?
- 为什么这样做?C中的字符指针
- C++中的字符串分配:为什么这样做
- 带有1个参数的C++2D数组索引(为什么这样做?)
- 为什么这样做?[C++;无效指针]
- 线程之间的Qt连接类型:为什么这样做
- 在派生类中同时分配多个字段-为什么这样做有效
- 为什么这样做?阵列访问不正常
- 迭代char**为什么这样做
- c++ lambda, capture, Smart Ptrs和Stack:为什么这样做?
- 在信号代码中将整数转换为函数指针-为什么这样做?
- 如果一个引用一旦被初始化为一个对象,它就不能被改变,为什么这样做呢?
- 回退可变构造函数-为什么这样做
- 访问类中的私有成员变量:为什么这样做