在C ++中,这是更好的i>
这个问题在这里已经有了答案:
在汇编语言中,两者的结构相同:
i > -1
cmp [register with i value],-1
jg [somewhere]
i >= 0
cmp [register with i value],0
jge [somewhere]
根据使用的跳转标志,指令jg
做出两个标志比较(ZF = 0和SF = OF),但jge
只做一个(SF = OF)。
所以我很想说,两者都使用几乎相同的寄存器和CPU周期,可能i >= 0
速度会更快一些。
那么,根据逻辑>操作可能比“=便宜”,但我想你正在编译与优化选项启用,所以编译器可能会做他想优化你的代码,所以我会说这并不重要,即使其中一个速度更快,编译器可能会将其更改为最佳选项
当编写for循环时,将它从for (i = 0; i < 1000; i++)
转换for (i = 1000; i > 0; i--)
会是有益的,因为在某些体系结构中,编译器可以跳过比较当我达到0时,作为标志的指令将被设置。在现代架构中,我不确定它是否重要。