2014-08-29 187 views
0

这两个陈述的表现是否有区别?“i ++”如何比“i = i + 1”更高效?

i++; 
i = i + 1; 
+2

您的标题与您的问题不符。 – Mysticial 2014-08-29 05:01:24

+0

++ i是最高效的,i ++在递增变量之前返回i的一个副本。如果++我简单地增加变量并避免复制。 – 2014-08-29 05:06:01

回答

6

取决于优化。在大多数处理器上,可以将其表示为单个机器语言指令。另一方面,i = i + 1可以由多达四个表示:加载i,加载1,添加,存储到i;尽管即使是一个中等的智能编译器也应该能够识别它可以将其重写入前者。

0

不,没有区别。编译器会将这些编译成相同的程序集

+0

查看amadan的回答 – nobalG 2014-08-29 05:03:28

+1

是的,Amadan的回答更加完整和正确。我确实假设代码是在启用优化的情况下编译的。 – Stephen 2014-08-29 05:10:44

+1

@DividebyZero:说实话,今天在LLVM和东西的时代,我相信其实没有什么区别。这只是我不会自动假设C =现代C :)(我有一些熟人仍然在25岁的Sun boxen工作) – Amadan 2014-08-29 05:14:09

相关问题