我见过代码(在C中),其中包含类似于:
for(;;){
}
Run Code Online (Sandbox Code Playgroud)
这将如何工作,为什么它在任何情况下使用?
oua*_*uah 20
这是拥有无限循环的惯用方法.
在C编程语言书中,由Kernighan&Ritchie出版,第3.5节介绍了它:
for (;;) {
...
}
Run Code Online (Sandbox Code Playgroud)
是一个无限循环,可能是通过其他方式打破,如休息或返回.
这相当于无限循环,正如许多其他人所解释的那样.但是,很少有人解释为什么这会作为无限循环执行.
一个for循环可以分解为三个部分:
for(initialization(s); condition(s); looping command(s))
Run Code Online (Sandbox Code Playgroud)
实际上并不需要这些字段.如果没有提供条件,就没有什么可以阻止命令运行.这是因为for循环查找false语句.没有条件,没有什么是错误的,因此循环无限期地运行.
因此,要使for循环无限,您只需要提供一个条件.这意味着这也是一个有效的无限循环:
for(int i = 0;; i++)
printf("Iteration: %i\n", i);
Run Code Online (Sandbox Code Playgroud)
为了便于阅读,并确保第二个分号不是拼写错误,一些程序员可能会在它们之间放置一个空格,或者true作为条件.
老实说,我更喜欢while(true),因为这是一个明确的无限循环.使用while(1)也可以,但'1'是整数,而不是布尔值.虽然它相当于true,但并不总是意味着true.
在这三种类型的无限循环之间,for(;;)具有最少的字符(7).while(1)排名第二,共8个字符,while(true)第11个字符.
我想某些程序员喜欢在可读程序上使用低字节数,但我不建议使用for(;;).虽然相当,但我认为使用while(true)是更好的做法.
一个for循环需要三个表达式,用分号分隔,并且是完全可选的:
int i=0)i < 10)i++)在这种情况下,三个表达式都是空的,因此没有条件会使循环停止,从而创建一个无限循环,除非像break(将退出循环)或return使用流控制指令.
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |