返回++ a与返回++不同,为什么?

时间:2017-12-26 19:08:00

标签: c++

当我发现奇怪的东西时,我正在尝试一些代码。我有以下代码:

#include <iostream>

int add_one_return(int a) {
    return a++;
}
void add_one_ref(int &a) {
    a++;
}

int main(int argc, char const *argv[]) {
    int a1 = 5;
    int a2 = 5;
    a1 = add_one_return(a1);
    add_one_ref(a2);
    std::cout << a1 << " " << a2 << std::endl;
    return 0;
}

但是当我运行它时,程序打印5 6。我回去后将add_one_return更改为:

int add_one_return(int a) {
    return ++a;
}

它有效!为什么++a有效但a++无效? a++是否有优势,因为我也在for循环中听到您要使用for(int i = 0; i < someVar; ++i) {},为什么a++呢?

1 个答案:

答案 0 :(得分:4)

  • a++返回之前的a,然后递增它,所以最初你的函数只返回参数然后加一个。

  • ++a递增变量然后返回,这就是你想要的。