8

我只能假设这是一个无限循环。

我可以在 for 循环中省略三个表达式中的任何一个吗?省略时是否每个都有默认值?

4

10 回答 10

15

是的,这是一个无限循环。

例子:

for (; ;) { }(又名:螃蟹)

while (true) { }

do { } while (true)

于 2009-03-30T13:56:20.103 回答
5

这确实是一个无限循环。

在引擎盖下,编译器/抖动会将其优化为(有效地)一个简单的 JMP 操作。

它实际上也与以下内容相同:

while (true)
{
}

(除了这也被优化掉了,因为 while 表达式的 (true) 部分通常需要某种比较,但是在这种情况下,没有什么可比较的。继续循环!)

于 2009-03-30T14:00:15.837 回答
4

是的,这是一个无限循环。您可以省略这三个表达式中的任何一个,但根据我的经验,它通常是第一个或全部 3 个。

于 2009-03-30T13:56:42.147 回答
3

这是一个无限循环。实际上,它与此相同:

while (true)
{
}
于 2009-03-30T13:57:25.420 回答
3

for (; ;) { }是无限循环,你是对的。

如果你想使用它,那么你必须在你的循环体中加入一些条件,以便它可以从循环中退出。

for (; ;) 
{
    if (conditionTrue)
        break;
    else
        continue;
} 
于 2009-03-30T14:04:16.840 回答
2

没有默认值。什么都没有初始化,什么都没有增加,也没有完成测试。

于 2009-03-30T13:57:14.687 回答
2

第一部分和第三部分没有默认值(它们默认为空,它会起作用)。条件表达式的默认值truefor(;;)有效地进行无限循环。(如果默认值应该是false,那么拥有这样的构造将毫无用处)。

于 2009-03-30T14:00:18.627 回答
1

就像在 C 和 C++ 中一样,您可以省略这三个中的任何一个,或三个都省略。

于 2009-03-30T13:56:15.673 回答
1

Microsoft 的 C# Programmer's Reference说:

for 语句的所有表达式都是可选的;例如,以下语句用于编写无限循环:

for (;;) {
   ...
}
于 2009-03-30T18:52:50.297 回答
0

这是一个无限循环:)。

于 2009-03-30T13:56:58.260 回答