我见过代码(在C中),其中包含类似于:
的内容for(;;){
}
这将如何工作,为什么它在任何实例中使用?
答案 0 :(得分:20)
这是拥有无限循环的惯用方法。
在C编程语言书中,由Kernighan& Ritchie一书在第3.5节中介绍:
for (;;) {
...
}
是一个无限循环,可能会被其他方式破坏,例如中断或返回。
答案 1 :(得分:8)
是一个像
这样的无限循环while(true)
{}
答案 2 :(得分:6)
这相当于一个无限循环,正如许多其他人所解释的那样。但是,很少有人解释为什么这是一个无限循环。
for
循环可以分为三个部分:
for(initialization(s); condition(s); looping command(s))
实际上并不需要这些字段。如果没有提供条件,就没有什么可以阻止命令运行。这是因为for
循环查找 false 语句。没有提供条件,没有什么是错误的,因此循环无限期地运行。
因此,要使for
循环无限,您只需要提供一个条件。这意味着这也是一个有效的无限循环:
for(int i = 0;; i++)
printf("Iteration: %i\n", i);
为了便于阅读,并确保第二个分号不是拼写错误,一些程序员可能会在它们之间放置一个空格,或者将true
作为条件。
老实说,我更喜欢while(true)
,因为这是一个明确的无限循环。使用while(1)
也可以,但“1”是一个整数,而不是布尔值。虽然它等同于true
,但并不总是意味着true
。
在这三种类型的无限循环之间,for(;;)
具有最少的字符(7)。 while(1)
以8个字符排在第二位,而while(true)
位于第11位。
我认为某些程序员喜欢在可读程序上使用低字节数,但我不建议使用for(;;)
。虽然相同,但我认为使用while(true)
是更好的做法。
答案 3 :(得分:5)
for
循环需要三个表达式,用分号分隔,并且完全是可选的:
int i=0
)i < 10
)i++
)在这种情况下,三个表达式都是空的,因此没有条件会使循环停止,从而创建一个无限循环,除非像break
这样的流控制指令(将退出循环)或使用return
。
答案 4 :(得分:4)
它是一个无限循环。它相当于:
while (true) {
}
C#编译器直接将for (; ;)
转换为与while (true)
完全相同的构造。
答案 5 :(得分:4)
无限循环
与
相同while(true){}
答案 6 :(得分:4)
代码for(;;){}
或while(true){}
或while(1){}
都代表无限循环。
无限循环是预期运行的软件系统和“无限”时间量的预期。每个操作系统至少有一个 - 这是后台任务或空闲任务的实现方式。
实时系统也使用无限循环,因为系统必须处理异步的事件;
基本上任何运行软件的东西都会以某种方式使用无限循环。
答案 7 :(得分:2)
我不知道为什么没有人回答为什么人们这样做而不是while(true)
:这是因为while(true)
通常会生成一个编译警告,表示循环的条件是不变的。
答案 8 :(得分:0)
这种无限循环可用于微控制器。在主函数中,初始化微控制器的基本功能,然后放入while (1)
。
void MAIN(void)
{
Init_Device();
while(1);
}
微控制器只会等待内部或外部器件的中断(如定时器溢出或准备读取的UART数据),并对这些中断作出反应。