c++循环的奇怪行为

Strange behaviour for loop C++

本文关键字:循环 c++      更新时间:2023-10-16

我很难理解为什么在这个代码片段中的"Hello"语句不是被打印出来。我认为for循环中的条件语句只在第二次迭代后才开始测试。

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

它根本不会进入循环,因为for循环是在开始时测试的。

count = 0开始,但循环条件是count < 0。因此,它立即失败并跳过整个循环。

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

for循环:

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

被定义为等同于:

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

,注意continue将转到++count,而不是count < 0

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

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

首先测试条件。

for循环

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

等价于:

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

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

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