【问题标题】:Are there restrictions in For Loops when putting more than one condition?放置多个条件时,For 循环是否有限制?
【发布时间】:2018-06-04 17:09:28
【问题描述】:

将多个条件放入 for 循环可以吗?

例如:

bool b = true;
for (int i = 0; i < 100 && b; i++)
    b = changeB(i); //Imagine this does something with b

所以有人说将这种条件放在 for 循环中是不正确的。有什么具体原因吗?还是做得好?

【问题讨论】:

  • 这是完全有效的。您从哪里得知这是一种不好的做法?
  • 如果有人第一次看到代码,你认为代码的逻辑意图会很明显吗?如果是,那么您的代码可能没问题,您不必担心:)。
  • 我的一个朋友 -- 你的朋友也教过你如何写替代方案吗?这可以追溯到我之前的评论。 for (int i = 0; i &lt; 100; i++) { b = changeB(i); if ( !b ) break; }。那个版本看起来比你发布的版本简单吗?
  • 嗯,我想你的朋友可能不知道他在说什么,或者他们对另一种情况非常具体。
  • 如果你的朋友告诉你这是一种糟糕的编程习惯,我认为他们会是你会问这个问题的人。这个建议是在他们临终时给出的吗?

标签: c++ for-loop restrictions


【解决方案1】:

可以,但最重要的是有清晰的变量名。例如,B 不是一个足够描述性的名称。

【讨论】:

  • 是的,是的,这只是一个愚蠢的例子来解释自己
【解决方案2】:

为什么不应该在 for 循环中放入多个条件?

没关系。

所以有人说将这种条件放在 for 循环中是不正确的。有什么具体原因吗?

我怀疑说这话的人可能知道他们发表意见的具体原因。

如果您要想象一系列条件表达式,每个条件表达式都比前一个更复杂,那么肯定会在某些时候条件变得过于复杂而无法遵循。表达式究竟在什么时候变得过于复杂而无法在循环条件中读取是非常主观的。


有趣的是,即使是 MISRA 指南——其中一些是主观上愚蠢和限制性的——明确允许使用“其他”循环控制变量。

【讨论】:

  • 是的,可能是因为可读性,谢谢回答
猜你喜欢
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 2023-01-29
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
相关资源
最近更新 更多