考虑下面的代码片段:
for(i=0;i<10;i+=2) // 1
for(i=0;i<2;i=i+2) // 2
哪一个会更好用?
它对性能有什么影响吗?
以下耗时 0.0260015 秒
for (i = 0 ; i < 10000000 ; i += 2)
这花了 0.0170010
for (i = 0 ; i < 10000000 ; i = i + 2)
@MasterID 是正确的,但当我启用“优化代码”时,两者都报告了 0.0150009 秒
你的问题没有明确的答案。这取决于您的编译器在其他方面(优化级别,...)和目标平台的智能程度。这不是 C 语言问题。该语言本身并没有或多或少的性能。这仅取决于编译器从中构建的内容。因此,如果性能很重要,请针对您的用例进行测试...
否则,我的建议是,以您觉得更易读的方式编写它。
至少,第一个选项与第二个选项一样快。尽管任何编译优化都会生成相同的汇编代码。
两者都表达了完全相同的语义,即在 C 语言的抽象机中完全相同的效果。如果一个比另一个慢,那是编译器中的一个实现质量缺陷。