可能重复:
Is “for(;;)” faster than “while (TRUE)”? If not, why do people use it?
使用此for循环找到代码。
例如,while(true)
使用它的确切功能是什么?是否使用更少的内存?
答案 0 :(得分:11)
for(;;)
在功能上等同于while(true)
,但避免了某些编译器(包括MSVC的cl)的“条件表达式不变”警告
答案 1 :(得分:3)
这个结构已经被Kernighan和Ritchie在他们的 C编程语言一书中推广(第3.5节)
for语句
for (expr1; expr2; expr3)
statement
如果省略expr1或expr3,则只是从扩展中删除它。如果测试expr2不存在,则将其视为永久正确,因此
for (;;) {
...
}
是一个“无限”循环,可能被其他方式打破,例如break
或return
。
for(;;)
和while(true)
之间完全没有区别。
答案 2 :(得分:1)
while(true)
{
}
总是我用过的东西,以及我见过别人用来做一个必须手动打破的循环。
有些编译器正在向你提出这个问题,而这个问题可能是错误的。但事实并非如此。
为两者生成的汇编代码完全相同。没有区别。
答案 3 :(得分:1)
首先,循环的使用取决于要求&基于此,我们只能决定何时使用哪一个。只要查看@Luchian所问的内容,你就会知道它。
其次,这显然取决于特定语言的解释器/编译器的特定实现。
也就是说,从理论上讲,任何理智的实现都可能能够在另一个实现方面实现一个,如果它更快,那么差异最多可以忽略不计。