for循环如何工作,特别是(;;)?
通过一些旧的公司代码,我遇到了一个for循环,看起来像这样:
for (;;) { //Some stuff }
我试过谷歌,但找不到任何答案。 我在编程课上睡着了吗?或者这是一个不寻常的循环?
java中的for
循环具有以下结构 –
for (initialization statement; condition check; update) loop body;
正如你所看到的,这里有四个陈述 –
- 初始化语句:当第一次input循环时,该语句只执行一次。 这是一个可选的语句,这意味着你可以select保持这个字段为空。 它通常用于一些初始化的目的。
- 有条件的检查:这个声明可能是最重要的一个。 它检查以确定某些expression式是否为真。 如果是,则循环执行继续。 您可以select将此字段保留为空,并将其评估为
true
。 - 更新:这个语句列表从左到右执行,通常用于递增/递减某个variables。
- 循环体:循环的主体,根据条件检查的真值一次又一次执行。
基本上这就是执行的方式 – 首先,当循环首次进入时,初始化语句被执行一次。 然后执行条件检查以查看它是否评估为真。 如果是,则执行循环体,否则循环执行结束。 之后,Update语句被执行。 接下来,再次执行条件检查,如果它的计算结果为true,则再次执行循环体,然后执行update语句,然后再执行条件检查….即可获取图片。
现在关于你for( ; ; )
语法。 它没有初始化语句,所以什么都不会执行。 这是有条件的检查语句也是空的,所以这意味着它的计算结果为真。 之后,循环体被执行。 接下来,由于update语句是空的,所以不执行任何操作。 然后再次执行条件检查,这将再次评估为真,然后整个过程将再次重复。
所以你看,这基本上是一个无限循环,它没有初始化语句,其条件检查总是评估为真,而没有更新语句。 这相当于 –
while(true) { ..... }
这是java中另一个stream行的循环结构。
当你像这样使用一个无限循环时,重要的是要注意破坏条件,因为在大多数情况下你不能让循环无限期地运行。 要打破这些循环,可以使用break
语句。 结构如下 –
if(some_condition_is_true) break; // This will cause execution to break out of its nearest loop
要么
if(some_condition_is_false) break;
这是一样的:
while(true) { //Some Stuff }
基本上,一个无限循环的替代语法。
这些都是无限循环
for(;;) { // endlessly } while(true) { // endlessly } do { // endlessly } while(true);
这个循环没有防范,并且作为一个while(true)循环。 它将无限循环,直到rest。
这是一个无限循环。 不完全好的编码,因为它不直观,实际上将编译或不会引发运行时错误。 重写为while(true) { /* code */ }
将更可读,以指示无限循环。
这是一个无限循环。 初始化,条件和增量语句都是可选的,所以没有任何一个,它总是会循环(除非中断或者其他一些构造与它交互)。
虽然我不确定Java的问题 ,但是这个问题解释了如何在.Net中空你的一段while (true)
会被编译成完全一样的东西。 如果Java的确如此,我也不会感到惊讶。
/ * while循环
5块钱
1块巧克力= 1块钱
while my money is greater than 1 bucks select chocolate pay 1 bucks to the shopkeeper money = money - 1 end
回家,因为我的钱= 0雄鹿* /
#include<stdio.h> int main(){ int money = 5; while( money >= 1){ printf("inside the shopk and selecting chocolate\n"); printf("after selecting chocolate paying 1 bucks\n"); money = money - 1 ; printf("my remaining moeny = %d\n", money); printf("\n\n"); } printf("dont have money cant go inside the shop, money = %d", money); return 0; }
无限的钱
while( codition ){ // condition will always true ....infinite loop statement(s) }
请访问此video以便更好地了解https://www.youtube.com/watch?v=eqDv2wxDMJ8&t=25s