术语“空循环”在C和C ++中究竟是指什么?

时间:2011-01-04 09:33:19

标签: c++ c

这是这样的事情:

for(;;)
 {
   statements;
 }

或者就是这样:

for(initialisation;condition;updation)
{
}

我正在寻找各种来源的答案。

6 个答案:

答案 0 :(得分:30)

你的第一个案例(带有空表达式的 )是一个无限循环,第二个案例(用于语句的空体)是一个循环

答案 1 :(得分:4)

在我的环境中,它是这样的:

for(;;) { statements; }

无限循环

for(initialisation;condition;updation) { } 

空循环

答案 2 :(得分:2)

答案取决于上下文。

如果您指的是 循环,那么

 for(;;)
 {
     statements;
 }

就是这样。

虽然使用while循环可以实现同样的目的:

while(true)
{
    statements;
}

这不是一个“空”循环。这两个都是无限循环,您必须在循环内部使用break

另一方面,

for(initialisation;condition;updation)
{
}

这是一个“空”循环,基本上什么都不做,除了可能更新一些可以在循环本身之前定义的变量。

答案 3 :(得分:1)

等于:

while (true) {
  statements;
}

无限循环是一个循环,直到其他东西停止它为止。

答案 4 :(得分:1)

空循环是一个具有空体的循环,例如

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;
}

答案 5 :(得分:1)

for(;;)
 {
   statements;
 }

是无穷循环,因为有冗余值/垃圾值使循环成为真

for(initialisation;condition;updation)
 {
   body;
 }

仅仅是for循环的语法(用于教育目的)