【问题标题】:Are these two loops equivalent: off-by-one这两个循环是否等效:一个
【发布时间】:2020-11-23 05:34:09
【问题描述】:

这两个循环是一样的吗?出于某种原因,第二个循环是一对一的,我不知道为什么。

while ( !b && ++n < WORD_COUNT ) b = mWords[n];
n++;
while ( !b && n < WORD_COUNT ) {
    b = mWords[n];
    n++;
}

【问题讨论】:

标签: c++ loops off-by-one


【解决方案1】:

当谓词b 不成功时,可能会在第一种形式中应用逻辑短路,并且可能会跳过n 的最终增量。

在第二种形式中,增量发生在谓词 b 被计算之前,所以当循环退出时,n 是减一的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2015-05-28
    • 1970-01-01
    相关资源
    最近更新 更多