【问题标题】:Why choosing for (;;){} over while(1)? [duplicate]为什么选择 for (;;){} 而不是 while(1)? [复制]
【发布时间】:2012-11-12 18:31:57
【问题描述】:

可能重复:
Is “for(;;)” faster than “while (TRUE)”? If not, why do people use it?

我看到了

for (;;)
{
  // Some code here
} 

经常。但它有什么好处,为什么不选择while(1){}

【问题讨论】:

  • 好的。我搜索了它。但是 google 和 Stackoverflow 搜索功能都没有返回足够的结果。

标签: c++ loops for-loop while-loop


【解决方案1】:

两者是等价的,并且很可能会产生相同的机器代码。选择其中一个是个人喜好问题。

【讨论】:

  • 不太正确。它们(可以说)在效果上是相同的,但在表达的意思上并不完全相同:一个包含“条件”,另一个不包含。
  • @stakx:它们都包含条件:一个永远为真,另一个永远为真。
【解决方案2】:

这是Kernighan and Ritchie used in their book*forever 循环的形式。绝对没有其他理由偏爱一种形式。

* 第 3.5 节,关于 While 和 For 循环,示例四。

【讨论】:

  • 小 1 个字符。而Go 连while循环都没有,Go 程序员更容易理解?
【解决方案3】:

这并不重要 - 这只是个人喜好。

我更喜欢for(;;),因为我认为它强调了永远循环方面。

【讨论】:

  • 而且我认为while(true) 看起来像是一个永远是true 的条件。 :-)
【解决方案4】:

它们产生相同的代码。您可能更喜欢 for (;;) 的原因有几个,但这只是个人喜好:

  1. 某些编译器会警告您有关始终为真的条件。 for(;;) 不会有这个问题。

  2. for (;;) 的字面意思是“永远循环!”,而while (true) 仍然似乎有某种条件。

我说选择一个并坚持下去。只要不随意切换就没有关系。

【讨论】:

  • 个人意见,但for (;;) 对我来说字面意思是不好的形式,而while(true) 字面意思是“永远循环!”它们的行为和编译器生成的汇编代码完全相同。
  • @DavidHammen 没错!我只是在说明for (;;) 可能更常见的原因。
猜你喜欢
  • 2011-04-21
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
  • 2023-04-08
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
相关资源
最近更新 更多