i!= n vs i< i的优点和缺点n在一个int for循环中

时间:2014-07-04 22:55:59

标签: language-agnostic

使用一个或其他迭代函数有哪些优缺点?

function (int n) {
    for (int i = 1; i != n; ++i) { ... }
}

VS

function (int n) {
    for (int i = 1; i < n; i++) { ... }
}

3 个答案:

答案 0 :(得分:5)

我认为反对第一个版本的主要论点是它是一个不那么常见的习语。

记住代码的读取频率高于编写代码,如果没有明确的优势,那么使用不太熟悉的for循环形式是没有意义的。它所实现的一切都会分散将来处理代码的人的注意力。

所以主要是出于代码维护的原因(由其他人以及原始编码器),我赞成更常见的第二种格式。

答案 1 :(得分:1)

如果<小于n,则1版本将正常运行。带!=的版本将进入无限循环(好吧,可能不是无限的,因为整数变量在大多数语言中都会循环)。

使用<也可以更好地概括。 E.g。

for (i = start; i < end; i += increment)

即使end - start不是increment的倍数,这也会有用。

答案 2 :(得分:1)

第一个是非常危险的,可能导致无限循环。

  • 如果n小于1,则循环将永远不会退出。
  • 如果循环内的某些内容发生变化i,那么它会跳过n的值,那么循环将永远不会退出。

编辑:当我说永不退出时,确定更准确,它最终会以这种或那种方式退出,但它不会以这种方式出现最理智的开发人员期望。我可以想象一下那个可调试你的代码的可怜的家伙,它可以调用数据库20亿次。