我在这里有这个代码:
#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是用;
分隔的,它下面的代码块只是内部代码范围?
答案 0 :(得分:2)
是的,因为counter
的初始值是0
,然后是声明
while (counter < 10);
隐含地
while (counter < 10) {}
是一个无限循环。是的,由于while语句中的终止分号,后续的支撑块只是另一个范围。
答案 1 :(得分:1)
代码while(counter < 10);
导致undefined behaviour,因为没有在线程上取得进展。
实际上,这可能意味着执行挂起,或执行跳过该行或其他任何内容。编译器可能会优化整个程序以输出1
或11
。
如需进一步阅读,请参阅Forward progress - progress guarantee