我用的是MinGW编译器,输出结果为什么是3 3?请大神帮忙分析一下。
#include <iostream> using namespace std; int fun(int &x) { return ++x; } int main() { int y=2; cout<<y<<" "<<fun(y)<<endl; return 0; }
收起
cout<<y<<" "<<fun(y)<<endl;这个表达式是从右往左求值的,也就是先计算fun(y)在计算y的值,而函数的fun()又是引用传递,在函数中所作的变化会影响到原来的变量,所以执行自增操作后y的值编程了3,而返回值也是3
cout<<y<<" "<<fun(y)<<endl;
fun(y)
y
fun()
报告相同问题?