For loop 什么';这个for循环的范围是多少?

For loop 什么';这个for循环的范围是多少?,for-loop,For Loop,我是CS新手,在网上找到了这段代码。两个分号之间的空白表示什么?这个for循环的范围是多少?谢谢 for (int i = 0, temp; ; i++) 这是for循环的典型结构: for(initialization; condition ; increment/decrement) { statement(s); } 但你的建议如下: for(initialization; ; increment) { statement(s); } 正如您所看到的,条件部分被删

我是CS新手,在网上找到了这段代码。两个分号之间的空白表示什么?这个for循环的范围是多少?谢谢

for (int i = 0, temp; ; i++)
这是
for
循环的典型结构:

for(initialization; condition ; increment/decrement)
{
    statement(s);
}
但你的建议如下:

for(initialization; ; increment)
{
      statement(s);
}
正如您所看到的,
条件
部分被删除,这是完全有效的,但这仅仅意味着循环将无限运行

通常在这种情况下,如果满足某些条件,循环块内的某些逻辑将负责中断循环。

请参阅文档了解:

for语句定义了初始值设定项、条件和迭代器部分:

for (initializer; condition; iterator)
    body
这三个部分都是可选的

此外,来自同一来源:

如果条件部分不存在或布尔表达式的计算结果为true,则执行下一个循环迭代;否则,循环将退出


(强调我的)

如果您查看at的参考,您可以看到以下示例

以下示例定义了无限for循环:

for ( ; ; )
{
    // Body of the loop.
}
无穷大来自“条件部分”为空。再次从以下方面:

条件部分(如果存在)必须是布尔表达式。在每次循环迭代之前对该表达式求值。如果条件部分不存在或布尔表达式的计算结果为true,则执行下一个循环迭代;否则,循环将退出


这是一个通过永无止境的循环实现的坏时钟,显示了
i
temp
在循环过程中的变化方式之间的差异

public async static Task Main(string[] args)
{
    var start = DateTime.Now;
    for (int i = 0, temp; ; i++)
    {
        // 'i' is a) initalised and b) incremented after each 
        // 'temp' is a) *un*initialised and b) doesn't automatically change
        temp = 666;

        Console.WriteLine($"It's now {DateTime.Now.TimeOfDay} and this is about {i} seconds after {start.TimeOfDay}. 'temp' is {temp}");
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
}
输出:

It's now 09:07:02.9269857 and this is about 0 seconds after 09:07:02.9246017. 'temp' is 666
It's now 09:07:04.0195240 and this is about 1 seconds after 09:07:02.9246017. 'temp' is 666
It's now 09:07:05.0223953 and this is about 2 seconds after 09:07:02.9246017. 'temp' is 666
It's now 09:07:06.0379706 and this is about 3 seconds after 09:07:02.9246017. 'temp' is 666
It's now 09:07:07.0482980 and this is about 4 seconds after 09:07:02.9246017. 'temp' is 666

为什么链接到C#而不是Java的文档?OP被标记为Java。@kaan最初没有标记,我将CS误读为C。Java标记是由Ousmane D添加的,而不是OP.@OusmaneD。为什么要将其标记为Java?它可以是任何一种C族语言,并使用这种语法。最好让OP澄清他们谈论的是哪种语言,或者添加语言不可知标记,因为据我所知,所有语言的行为都是相同的。@MaxVollmer好吧,我“假设”它是Java,有几个合理的原因,但好吧,也许让OP澄清会更好。还原了我的编辑。