用于(;;)的功能是什么?

时间:2013-01-18 13:02:52

标签: c++ syntax

  

可能重复:
  Is “for(;;)” faster than “while (TRUE)”? If not, why do people use it?

使用此for循环找到代码。  例如,while(true)使用它的确切功能是什么?是否使用更少的内存?

4 个答案:

答案 0 :(得分:11)

for(;;)在功能上等同于while(true),但避免了某些编译器(包括MSVC的cl)的“条件表达式不变”警告

答案 1 :(得分:3)

这个结构已经被Kernighan和Ritchie在他们的 C编程语言一书中推广(第3.5节)

  

for语句

for (expr1; expr2; expr3)
    statement
  

如果省略expr1或expr3,则只是从扩展中删除它。如果测试expr2不存在,则将其视为永久正确,因此

for (;;) {
    ...
}

是一个“无限”循环,可能被其他方式打破,例如breakreturn

for(;;)while(true)之间完全没有区别。

答案 2 :(得分:1)

while(true)
{

}

总是我用过的东西,以及我见过别人用来做一个必须手动打破的循环。

有些编译器正在向你提出这个问题,而这个问题可能是错误的。但事实并非如此。

为两者生成的汇编代码完全相同。没有区别。

答案 3 :(得分:1)

首先,循环的使用取决于要求&基于此,我们只能决定何时使用哪一个。只要查看@Luchian所问的内容,你就会知道它。

其次,这显然取决于特定语言的解释器/编译器的特定实现。

也就是说,从理论上讲,任何理智的实现都可能能够在另一个实现方面实现一个,如果它更快,那么差异最多可以忽略不计。