What does “for(;;)” do in C#?
我偶尔在我读过的书中看到过。但我没有找到任何解释。
1 2 3 4
| for (;;)
{
// Do some stuff.
} |
它有点像"while(true)"吗?基本上是一个无休止的投票循环还是什么?基本上你会做些什么直到你故意打破这个循环?
- 在问题发布后的第一分钟内回答7个问题!
- 功能上是一样的。我更喜欢while(true),因为for循环确实具有迭代的额外功能,而不仅仅是测试条件。有些人喜欢(;;)因为他们把它永远读下去。
- 在C中,"(;)"中的4个字符实际上转换为"Ever"-因此永远是:)
- @Justinhj:C这样的语言没有内置的布尔原语,所以有些人喜欢(;;)而不是(1)。
- 你会认为14个几乎相同的答案中至少有一个会被接受…
- 这就是问题所在@matt b!我要写一个小的随机数发生器来选择一个接受!大声笑!(实际上,我一直在工作,没有登录)
- 我觉得用这样的环很不舒服。有时我使用"while(1==1)"。
- for(;;)也不受那些恶作剧的同事的影响,这些同事在你不在电脑旁的时候,也就是#define true false的同事。
Is it kind of like"while(true)"?
对。它永远循环。
还要注意安德鲁·科尔森的评论:
Languages like C don't have built-in boolean primitives, so some people prefer for(;;) over while(1)
- 我不明白为什么会有22票,还有其他类似的答案。
- 这是对的,而且是第一次。它发生了。我没有为它赢得任何代表-今天已经上限了。
- 这是惊人的票数!
- 再投一张票,我就得到一枚银牌。一个被接受的答案会赢得另一个答案,但就我个人而言,我选择接受的答案是安德鲁·科尔森对这个问题的评论。如果这最终被接受,而他没有回答,我很可能会更新我的帖子,将评论包括在内(附属性)。
- 从长远来看,这是一个惊人的票数:stackoverflow.com/questions/84556/…
- 你知道,我也不明白为什么会有这么多的选票;我认为有一个"名声效应",即当一个用户拥有很高的代表性时,人们会对其他答案投赞成票。
- 可能吧,但更可能的是,这是一个简单的问题,所以每个人都会检查它,这个答案很容易验证,而且已经在列表的最上面了。相信我,我写的每一句话都不会像这样被投票通过。
- +乔尔,你先按一下按钮!;)
- 乔尔是对的,我甚至看到过他身上发生的事情。它是…奇怪的。
- 是的,可能会有一点"名声效应"(我很肯定人们喜欢乔恩·斯基特的帖子,而不是其他人说同样的话;)但更常见的是"如果帖子看起来正确的话,在顶部投票"。这意味着第一个答案最初会得到支持,而且很可能会继续获得大多数选票。别担心,没什么大不了的
- 顺便说一句,即使是在有布尔原语的语言中,for(;;)仍然比while(true)更可取。它成为打字错误的可能性较小,因此更明确地说,它打算成为一个无限循环。一个更实际的原因是有些编译器可能会发出while(true)的警告。:)
- 我认为与while(true)相当的应该是for(;true;),而不是for(;;)。事实上,我发现C编译器承认f(;;)是很奇怪的。它不应该在for的条件部分强制使用布尔表达式吗?
对。
在for中,如果没有提供任何内容:
- 初始化不起作用。
- 条件总是正确的
- count语句不起作用
它相当于while(true)。
- 或者是条件从来都不是假的?
- @Theotherscott,我认为你是对的。
你是对的。这是一个常见的C习语,用于无限循环。
对的。请注意,for循环的大括号包含三个部分:
初始化代码
继续循环的条件
为每个循环迭代执行的东西
使用for(;;)时,所有这些都是空的,因此没有执行任何初始化循环的操作,也没有保持循环运行的条件(即它将无限期运行),也没有为每个迭代执行任何操作,除了循环的内容。
是的,它是一个无限循环。
如果我记得正确的话,它是在"while(true)"之上使用的,它更像"for(;;)//ever"吗?
是的,它是一个无止境的循环,就像while(对)。
这是一个略受欢迎的惯例,可能是因为它较短。根本没有效率差异。
永远循环。
看看for循环。
1
| for ( initialization ; condition ; increment ) |
1)初始化-在此设置计数器变量
2)条件-保持循环,直到计数器变量满足条件
3)递增-递增计数器
如果没有条件,循环将永远持续下去。如果是这样的话,就不需要计数器了。因此
是的,这是一个无限循环。与执行while(true) { ... }相同的想法/效果
因菲尼特循环喜欢说
- "while(1)"不能用C编译。虽然期望一个bool,但不存在从int到bool的隐式强制转换。
- 你是对的,你必须自己投它,但是它确实在C++中工作,但是我把它改为一个更好的例子。
- 如果我一开始就大于等于2呢?一个更好的例子是"while(3<4)"。
- @Shrevatsar——这就是为什么我在评论中初始化了i=0,但你所说的例子也会起作用,实际上我喜欢它看起来更好、更容易看到的方式。
- while( true )
- 如果你有一个非常大的0值怎么办?
准确地说,任何在分号之间没有任何内容的for循环都将永远循环(直到以其他方式终止),因为它没有定义的不变量。
是的,它永远循环。但你应该使用的原因
而不是
那是
将给您一个编译器警告"条件表达式常量",而for循环不会。至少你会在最高的警告级别得到这样的编译器警告。
它没有结束条件,所以它将永远循环,直到找到一个中断,正如您已经猜到的。
我还可以补充一点,它看起来像两张笑脸在向你眨眼。
(;)
也许这就是为什么有些人喜欢用它。
对!.
通常用于嵌入式编程。
-设置中断和计时器。-然后永远循环。
当中断或计时器发生时,将被处理。