【发布时间】:2012-07-10 00:19:52
【问题描述】:
我在 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,那么我会假设没有一种情况会比另一种性能更好。
【问题讨论】:
-
这取决于您的编译器,因为任何体面的编译器都会将它们优化为完全相同的程序集。
标签: objective-c gnustep