C++程序问题,帮忙啊

来源:百度知道 编辑:UC知道 时间:2024/05/19 19:02:08
#include<iostream.h>
int a(9),b(8);
int iadd(int x,int y=a+b,int z=a/b);
void main()
{
int i(6),j(7);
int s1=iadd(i);
int s2=iadd(i,j);
int s3=iadd(i,j,i+j);
cout<<"s1="<<s1<<endl;
cout<<"s2="<<s2<<endl;
cout<<"s3="<<s3<<endl;
}
int iadd(int x.int y,int z)
{
return x+y+z;
}
输出结果是
S1=24
S2=14
S3=26
帮我分析一下运输过程啊,谢谢

int iadd(int x,int y=a+b,int z=a/b);
该函数的参数y,z有默认参数,即y=a+b=17,z=a/b=1,如果没有传递y,z的参数的时候函数将调用默认参数;
s1=iadd(i),即参数传递情况为x=i=6,y=17,z=1,y,z是默认参数,结果为24;
s2=iadd(i,j),参数传递情况为x=i=6,y=j=7,z=1,z是默认参数,结果为14;
s3=iadd(i,j,i+j)参数传递情况为x=i=6,y=j=7,z=i+j=13,结果为26