Objective-C:递增的混合方法 - i ++ vs i + = 1

时间:2012-07-10 13:47:34

标签: objective-c gnustep

我在github上浏览GNUstep project并遇到了这个小循环......

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

大多数但并非所有增量操作都是在源代码中使用' + = 1 '完成的;如果它是一致的话会有意义的。如果它是一致的,我会把它归结为简单的个人偏好,甚至是可读性。

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

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

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

这让我思考它是最佳实践还是风格指南,但是同一个编码器使用了两种递增方法。就个人而言,我不假思索地使用' i ++ ' - 而且我猜这对于任何编码人员来说都很自然,你只需要不加思索就输入它。

我错过了什么,或者这是“只是因为”?你有什么理由混合两种类型的递增吗?如果它们都编译成相同的ASM,那么我认为当一个表现优于另一个时,没有任何情况。

4 个答案:

答案 0 :(得分:3)

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

没有区别。

答案 1 :(得分:1)

在这种情况下,它们是等价的,你是对的,对于任何好的编译器,生成的汇编应该是等价的。

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

如果“一个人”发现一个循环达到了他在另一个项目中的预期并且复制粘贴它而不改变+ =或++(取决于他使用的是什么),该怎么办?

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