今天碰到这样一个问题,比如已知i=2,问调用函数fun(i,++i),其中实参的具体数值是多少?自己一开始以为是(2,2),但是经过查阅资料和自己的调试,发现应该是(3,3),这牵扯到函数调用时一个传值调用的顺序问题,实参的求值顺序因编译系统而异,有的是从右向左,有的是从左向右。附自己的测试小程序:
#include<iostream.h>
void fun(int,int);
int main(){
int i,j;
i=j=2;
fun(i,++i);
fun(j,j++);
cout<<i<<endl;
cout<<j<<endl;
return 0;
}
void fun(int i,int j)
{}