跳至主要內容

c++7.i++|++i区别

Mr.Si大约 2 分钟c++

头像
我不理解!++i和i++,有什么区别嘛?
头像
要分情况,有时候没区别有时候有区别。

直接使用时

GIF
头像
根据上方演示来看都是+1没有区别。

参与运算时

头像
参与运算时,区别就出现了!

#include <iostream>
using namespace std;

int main() {
    
    int i = 0;
    
    int result2 =i++;
    cout<<result2<<endl;
    
    i = 0;//为了测试重置为0.
    
    int result3=++i;
    cout<<result3<<endl;
    
    return 0;
}

运行结果

GIF
头像
我不理解!结果不一样了!
头像
这么看可能不形象,我给你重新举个例子。
#include <iostream>
using namespace std;
// 前置递增函数
int preIncrement(int& x) {
    return ++x;
}

// 后置递增函数
int postIncrement(int& x) {
    return x++;
}

int main() {
    
    int i = 5;
    
    // 使用前置递增函数
    int result1 = preIncrement(i);
    cout<<result1<<endl;
    
    i = 5;//便于测试我们重写赋值
    
    // 使用后置递增函数
    int result2 = postIncrement(i);
    cout<<result2<<endl;
    
    return 0;
}

GIF
  1. 前置递增函数 preIncrement

    int preIncrement(int& x) {
        return ++x;
    }
    

    这个函数先对 x 进行前置递增操作,然后返回递增后的值。因此,如果传入 5,函数会先将 x 递增为 6,然后返回 6

  2. 后置递增函数 postIncrement

    int postIncrement(int& x) {
        return x++;
    }
    

    这个函数先返回 x 的原始值,然后再对 x 进行后置递增操作。如果传入 5,函数会返回 5,然后将 x 递增为 6

头像
我大概理解了i本身无论怎么样都在自增,但 ++i先自增后返回。 i++先返回后自增。
头像
是的,其实字面上也是这个意思。
++i,++在前先自增然后返回i。
i++,++在后先返回i在自增加。
头像
这么说,如果我想让i++在函数中正常运行,还需要一个临时变量转存后才能返回,要不然始终少一步。
头像
是的,这也是大量数据时++i性能更高的原因,直接+1后返回i,不需要临时变量来复制传递。