循环C ++的奇怪行为

时间:2011-10-06 06:28:23

标签: c++

我无法理解为什么在此代码段中“Hello”语句不是 正在印刷。我认为for循环中的条件语句只在第二次迭代后才开始测试。

  for ( count = 0; count < 0; ++count)
    {
  cout<<"Hello!\n";     
    }

4 个答案:

答案 0 :(得分:7)

它永远不会进入循环,因为for循环在开始时进行了测试。

您从count = 0开始,但循环条件为count < 0。所以它立即失败并跳过整个循环。

do-while循环是在迭代结束时测试的循环。

答案 1 :(得分:4)

for循环:

for (count = 0; count < 0; ++count)
{
    cout<<"Hello!\n";     
}

定义为等同于:

{
    count = 0;
    while (count < 0)
    {
        {
            cout<<"Hello!\n";
        }
        ++count;
    }
}

警告continue将转到++count,而不是count < 0

答案 2 :(得分:2)

  

我认为for循环中的条件语句开始得到   仅在第二次迭代后测试

不,不。它已在第一次迭代之前检查过。

答案 3 :(得分:2)

首先测试病情。

for循环

 for (<initializer>; <condition>; <increment>) { <body> }

相当于:

{
  <initializer>
  bool __first = true;
  while ((__first ? __first = false : (<increment>, true)), <condition>) {
    <body>
  }
}

总是迭代一次的唯一循环结构是:

do {
  <body>
} while (<condition>);