在K&R中Ch 1:
语句
++nc提供了一个新的操作符++,这意味着增加1。您可以编写nc = nc + 1,但是++nc更简洁,而且效率更高。
什么时候加薪前会比其他方案更有效率?至少在大多数情况下,两者的程序集都是add (编辑:或inc)指令。他们什么时候不同?
发布于 2011-12-23 09:02:30
那篇课文已经过时了。在70年代,编译器可能会为++n提供更高效的输出,但不会有更多的结果。所有现代编译器都会产生相同的代码。
发布于 2011-12-23 09:03:08
在大多数情况下,至少两者的程序集都是add指令。
这并不完全正确:通常有一个separate "increment by one" instruction。然而,这是不相关的,因为任何半体面的编译器都会为++nc和nc = nc + 1生成相同的机器代码。
换句话说,没有性能上的差异。也许是在书写的时候,编译器不是很好,但现在已经不存在了。
发布于 2011-12-23 09:03:09
我不确定,我只是大声地思考(也许我不应该):也许在K&R时代,++nc被编译成比nc = nc + 1更有效的东西(例如,增量指令,而不是添加)。然而,现在编译器可能会自动地对此进行优化。
https://stackoverflow.com/questions/8614001
复制相似问题