可能重复:
Is there a performance difference between i++ and ++i in C?
我听说它说前缀增量比C中的后缀增量要快。这是真的吗?为什么?
++ x vs x ++
答案 0 :(得分:3)
这是一个荒谬的神话,一遍又一遍地重复着。这两个运算符有语义差异;一个结果是旧值,另一个结果是新值。如果使用此结果,则代码将具有不同的行为,具体取决于您使用的运算符,如果一种行为可以比另一种更有效地实现,则可能包括性能差异。但是,如果您不使用结果,则x=x+1
,x+=1
,x++
和++x
都相同。
答案 1 :(得分:1)
简短的回答没有。原因是它是相同的操作,只是改变了语句的评估顺序。
示例:
int a = x++;
int b = ++x;
伪装配:
mov a, x
inc x
inc x
mov b, x
这是一个简单的例子,但即使在较大的例子中,可能发生的最坏情况是内存屏障强制操作,它不允许将后增量值推送或拉过它,这只会增加额外的{{1由于依赖或强制屏障而导致的操作。大多数编译器在标准情况下使用指令重新排序来优化这个额外的mov
。