放置多个条件时,For 循环是否有限制?

Are there restrictions in For Loops when putting more than one condition?

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

例如:

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

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

Why is putting more than one condition into a for loop not supposed to be OK?

没关系。

So I was said that it's not correct to put that kind of conditions in a for loop. Any specific reasons?

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

如果您想象一系列条件表达式,每个条件表达式都比前一个更复杂,那么肯定会有某个点使条件变得太复杂而无法遵循。表达式在什么时候变得太复杂以至于无法在循环条件下阅读是非常主观的。


有趣的是,甚至 MISRA 指导方针——其中一些是 主观的 愚蠢和限制性的——明确允许使用 "other" 循环控制变量。

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