术语“空循环”在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; }