这个空循环是无限执行的吗?

时间:2017-11-15 02:33:37

标签: c++

我在这里有这个代码:

#include <iostream>
using namespace std;

int main() {
  int counter = 0;
  int sum = 0;
  while(counter < 10);
  {
    sum += ++ counter;
  }
  cout << sum << endl;
}

我想知道行while(counter < 10);是否是一个无限循环,导致其余的代码没有被执行。

另一个侧面问题,因为while是用;分隔的,它下面的代码块只是内部代码范围?

2 个答案:

答案 0 :(得分:2)

是的,因为counter的初始值是0,然后是声明

while (counter < 10);

隐含地

while (counter < 10) {}

是一个无限循环。是的,由于while语句中的终止分号,后续的支撑块只是另一个范围。

答案 1 :(得分:1)

代码while(counter < 10);导致undefined behaviour,因为没有在线程上取得进展。

实际上,这可能意味着执行挂起,或执行跳过该行或其他任何内容。编译器可能会优化整个程序以输出111

如需进一步阅读,请参阅Forward progress - progress guarantee