这个for循环实际上如何工作?

时间:2013-01-06 12:18:15

标签: c++ c

阅读一些主题我发现了这段代码,我想知道它是如何工作的,因为它是最原始的:

5
2

代码:

static int a = 7;

int test()
{
  return a--;
}

int main()
{
  for(test();test();test())
  {
    cout << test() << "\n";
  }
  return 0;
}

2 个答案:

答案 0 :(得分:13)

提交的操作顺序:

  1. a在启动时全局初始化。到7
  2. 首先命中for循环的初始化程序,test()a递减到6,然后返回先前的值(7),这将被忽略。
  3. 命中for循环的测试用例,test()a递减到5,然后返回通过非零测试的先前值(6),以便for循环可以继续。
  4. cout声明; test()a减少为4,返回先前值(5),并将其发送至cout
  5. 执行for循环的increment语句。 test()a递减为3,返回先前的值(4),该值将被忽略。
  6. for-loop的测试用例被击中。 test()a递减到2,返回先前值(3),该值通过非零测试并继续循环。
  7. cout声明; test()a减少为1,返回发送至cout的先前值(2)
  8. 执行for循环的increment语句。 test()a递减为0,返回先前的值(1),这将被忽略。
  9. for-loop的测试用例被击中。 test()a递减为-1,返回先前值(0),这将使非零测试失败并且循环终止。
  10. 现在。从6或8开始循环,看看会发生什么。 = P

答案 1 :(得分:12)

表单的for循环:

for (a; b; c) {
    // stuff
}

相当于:

{
    a;
    while (b) {
        // stuff
        c;
    }
}