每次通过时都会重置循环吗?

时间:2011-02-27 21:22:27

标签: c++

#include <iostream>
using namespace std;

int main (void) {
 cout << " 1\t2\t3\t4\t5\t6\t7\t8\t9" << endl << "" << endl;
 for (int c = 1; c < 10; c++) {
   cout << c << "| ";
   for (int i = 1; i < 10; i++) {
     cout << i * c << '\t';
   }
   cout << endl;
 }
 return 0;
}

嘿,所以这段代码产生了一个时间表...我在Google Code的C ++类上发现了它......我很困惑为什么每次你经历那个循环时第二个for循环中的“i”重置为1 ......还是在第一个参数中再次声明?

提前致谢!

2 个答案:

答案 0 :(得分:6)

它“恢复”为1,因为你明确地将它设置为1作为循环的开始条件......

此循环外不存在“i”名称,因此每次运行此循环时(对于'c'的每次迭代),则“i”是一个新变量,设置为1的开始。

答案 1 :(得分:3)

正如TZHX写的那样。 FOR语句通常有三个子句在parantheses中(技术上它们总是有三个但你不必指定它们),以及一个重复的语句(通常是一个语句块)。

在这三个子句中,第一个是初始化器,第二个控制循环,第三个是增量。因此,正如TZHX所说,由于初始化子句,我在开始时重置为1。当i <10(第二个子句)时,这将继续重复,并且每次迭代(第三个子句)i都会增加1。