【发布时间】:2011-02-22 17:34:14
【问题描述】:
谁能帮我解释一下这个指令: 对于 (;;)
我遇到过几种这样的标记(比如在 facebook 的 ajax 代码和 Java 的并发代码中)。
【问题讨论】:
-
#define EVER ;; for(EVER) //...
标签: java
谁能帮我解释一下这个指令: 对于 (;;)
我遇到过几种这样的标记(比如在 facebook 的 ajax 代码和 Java 的并发代码中)。
【问题讨论】:
标签: java
无限循环。
for 循环 (for(x; y; z)) 的三个部分中的每一个都是可选的。
所以你可以这样做:
int i = 0;
for (; i < 20; ++i)
它完全有效,或者
for (int i = 0; i < 20;) { ++i; }
或
for (int i = 0; ; ++i) { if (i < 20) { break; } }
它们都是有效的。
您也可以省略所有三个部分,for(;;)。然后你有一个循环:
所以基本上是一个无限循环。它只是做它在循环体中所说的,一次又一次
【讨论】:
true,然后执行包含的语句。“
这是一个无限循环。 for语句的具体说明见here。
【讨论】:
这是一个无限循环,类似于
while(true)
{
...
}
【讨论】:
这是一个无限循环,因为(不存在的)退出条件永远不会为假。
任何没有退出条件的 for 循环都是无限的:
for (int x=0; ; x++) { }
与while (true) 完全相同,但恕我直言,可读性稍差。
【讨论】:
for 循环的语法是
for (init-stmt; condition; next-stmt) {
}
所以它只是一个没有初始语句、下一个语句或条件的 for 循环。退出条件的缺失使其无限。
【讨论】:
这确实是一个无限循环。但是在 Java 中,您应该更喜欢 while (true) 而不是 for (;;),因为它更具可读性(您可能已经意识到)。无论如何,编译器都会对其进行优化。在 JavaScript 中,没有编译器,HTTP 上的每个字节都很重要,这就是为什么 for (;;) 是首选的原因。它节省了几个字符(字节)。
【讨论】:
while (true) 的可读性
for(;;) 更具可读性。