0

我在 github 上浏览一个GNUstep 项目,遇到了这个小循环......

for(; i < 9; i+=1)
{
  for(;j < 9; j+=1)
  {
      /* Inner loop code - snipped */
  }
}

大多数(但不是所有)增量操作都是在源代码中使用“ +=1 ”完成的;如果它是一致的,这将是有道理的。如果它是一致的,我会把它归结为简单的个人喜好,甚至是可读性。

然而,对于一个似乎由一个人完成的项目(毕竟这是一个简单的数独游戏),增量操作的不同风格让我有点好奇。

for(; i<10; i++)
{
  /* inner loop code - snipped */
}

现在我已经阅读了这个问题,它证实了我的怀疑 -无论使用何种语法,编译器都应该生成相同的低级代码

这让我开始思考这是最佳实践还是风格指南,但同一位编码员使用了这两种递增方法。就个人而言,我不假思索地使用“ i++ ”——我猜这对于任何编码人员来说都是很自然的,你几乎不假思索地输入它。

我错过了什么还是“仅仅因为”?你有什么理由混合这两种类型的增量吗?如果它们都编译为相同的 ASM,那么我会假设没有任何情况下一个性能优于另一个。

4

4 回答 4

3

通常这种情况发生在有几个程序员,每个人都有自己的编码偏好,并且项目没有强制执行严格的编码风格时。

没有区别。

于 2012-07-10T13:53:50.590 回答
1

在这种情况下,它们是等价的,你说得对,对于任何好的编译器,生成的程序集都应该是等价的。

另请注意,这并不特定于 Objective-C。Objective-C 基于 C,因此它与任何 C 代码完全相同。

于 2012-07-10T13:59:27.560 回答
1

如果这是一个单人项目,最可能的原因是程序员只是在中途改变了使用哪种风格的想法。

于 2012-07-10T14:13:25.647 回答
1

如果“一个人”发现一个循环实现了他在另一个项目中的预期并懒惰地复制粘贴它甚至没有更改 += 或 ++(取决于他使用什么)怎么办?

在使用其中一个或另一个时,我脑海中可能出现的唯一区别是在您链接的问题中指出的遍历数组时。

于 2012-07-10T14:15:52.150 回答