术语“空循环”在C和C ++中究竟是指什么?
这是这样的事情:
for(;;) { statements; }
或者是这样的:
for(initialisation;condition;updation) { }
我正在寻找各种来源的答案。
你的第一种情况( 对于空表达式)是一个无限循环而第二种情况( 对于 for语句的空体)是一个空循环
在我的环境中它是这样的:
for(;;) { statements; }
无尽的循环
for(initialisation;condition;updation) { }
空循环
答案取决于上下文。
如果你的意思是一个空的for循环,那么
for(;;) { statements; }
是这样的事情。
虽然,使用while循环可以实现同样的目的:
while(true) { statements; }
这不是一个“空”循环。 这两个都是无限循环,你必须打破循环内部的break
。
另一方面,
for(initialisation;condition;updation) { }
这是一个“空”循环,基本上什么都不做,除了更新一些可以在循环本身之前定义的变量。
它等于:
while (true) { statements; }
无限循环是一个循环,直到其他东西停止它。
空循环是具有空体的循环,例如
for(int i = 0; i < 10; ++i) {} while(cin) {}
(请注意,这里的第二个例子也恰好是无穷无尽的)
有些情况下这些是有用的,例如当一个函数具有所需的副作用并返回其成功时,并且应该重复直到不成功,例如读取文件中的最后一行:
std::string getLastLine(std::string filename) { std::ifstream in(filename.c_str()); if(!in) return ""; std::string line; while(std::getline(in, line)); // empty loop, the operation returns the condition return line; }