i ++或i--在for循环中?

Jay*_*Jay 4 c c++ java

在编写一个for循环,其中开始和结束条件都已知,哪种方式更好?假设我必须迭代一个循环以添加大小为5的数组元素.在这种情况下,就执行时间而言,以下哪一项会更有效?哪一个会提供更好的表现?

for (i = 0; i < 5; i++)
{
    /* logic */
}
Run Code Online (Sandbox Code Playgroud)

要么

for (i = 4; i >= 0; i--)
{
    /* logic */
}
Run Code Online (Sandbox Code Playgroud)

除了书面的困难i = 5 - 1;i = 4;,是否还有其他因素?

Rad*_*zea 9

通常建议集中精力使代码尽可能清晰和合理,而不必担心微观优化或其他因素.在你的情况下,第一个是更好的选择,因为大多数程序员更习惯按顺序遍历数组.

两个版本都将具有相同的结果(假设它们已正确实现)并且具有完全相同的运行时.

编辑:@Zane在一篇评论中提到,在前一段时间内,向后循环回到零的速度更快.原因是,将变量与零进行比较的速度更快.鉴于计算机在那些日子里要慢很多,所以鼓励这种优化.那些日子确实结束了......


小智 5

您的代码有问题。第一个循环很好,但第二个 while 从未执行:它运行了 0 次。它应该是

for(i=4;i>=0;i--){}
Run Code Online (Sandbox Code Playgroud)

此外,如果你问哪个更好,那是你的选择,你觉得哪个更舒服。对于我来说,感觉第一个比较舒服。

  • +1 这说明了为什么您应该始终编写您认为最容易理解的内容。预防甚至一个错误可能比使 1000 个循环稍微优化更重要,假设您可以证明它确实更优化。顺便说一句:通过循环展开循环,可以消除这么小的循环。;) (3认同)