【发布时间】: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
这两个循环是一样的吗?出于某种原因,第二个循环是一对一的,我不知道为什么。
while ( !b && ++n < WORD_COUNT ) b = mWords[n];
n++;
while ( !b && n < WORD_COUNT ) {
b = mWords[n];
n++;
}
【问题讨论】:
标签: c++ loops off-by-one
当谓词b 不成功时,可能会在第一种形式中应用逻辑短路,并且可能会跳过n 的最终增量。
在第二种形式中,增量发生在谓词 b 被计算之前,所以当循环退出时,n 是减一的。
【讨论】: