C++程序中,i++和++i的性能是否有所差异?


i++和++i的效果相同。唯一差别在于i++先对i进行赋值,再对i进行加1,而++i则是先对i加1,再对i进行赋值。我们可以在下面的代码中看出两者的差异。

示例代码

#include<iostream>
using namespace std;
int main() {
   int x = 3, y, z;
   y = x++;
   z = ++x;
   cout << x << ", " << y << ", " << z;
   return 0;
}

输出

5, 3, 5

现在的问题是,既然两个函数执行相同的任务,但是执行顺序不同,那么是否会存在性能问题,或者两者是一样的?

嗯,这两个操作的性能很大程度上取决于底层架构。其中一个是对存储在内存中的值进行自增,这意味着冯·诺依曼瓶颈基本上是两种情况的限制因素。

不过我们可以说++i比i++略快。在进行自增之前,i++会取得i的一个局部副本,而++i则不会。有时,如果可能,一些编译器会优化代码。但这种优化并不总是有效的,或者并非所有编译器都会这样做。

更新于: 30-07-2019

超过2K个浏览

开启你的 职业生涯

完成课程,获得认证

开始学习
Advertisement