For loop 什么';这个for循环的范围是多少?
我是CS新手,在网上找到了这段代码。两个分号之间的空白表示什么?这个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); } 正如您所看到的,条件部分被删
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澄清会更好。还原了我的编辑。