下面C++程序运行结果,是怎样算出来的?
#include<iostream.h>longf(intx){inty=2;staticintz=1;x+=y++,z++;returnx;}voidmain(){in...
#include <iostream.h>
long f(int x)
{
int y=2;
static int z=1;
x+=y++,z++;
return x;
}
void main()
{int x=2,k;
for (int i=0;i<2;i++)
k=f(x);
cout<<"k="<<k<<endl;
}
答案:
k=4 展开
long f(int x)
{
int y=2;
static int z=1;
x+=y++,z++;
return x;
}
void main()
{int x=2,k;
for (int i=0;i<2;i++)
k=f(x);
cout<<"k="<<k<<endl;
}
答案:
k=4 展开
1个回答
展开全部
for (int i=0;i<2;i++)
k=f(x);
这个语句的第二次循环时是执行k=f(x)=f(2);在执行函数f(2),此时z=2了,因为z是静态变量,在上一次循环时宜+1;但是这跟结果无关,因为x与z无关。x+=y++这个语句先x+=y;x=4,然后再y++,y=3;然后return x,即return 4;所以k=4. 顺便提一下x+=y++,z++;这个语句中间应该是分号不是逗号。
k=f(x);
这个语句的第二次循环时是执行k=f(x)=f(2);在执行函数f(2),此时z=2了,因为z是静态变量,在上一次循环时宜+1;但是这跟结果无关,因为x与z无关。x+=y++这个语句先x+=y;x=4,然后再y++,y=3;然后return x,即return 4;所以k=4. 顺便提一下x+=y++,z++;这个语句中间应该是分号不是逗号。
追问
for(int i=0;i<2;i++)
k=f(x);
这个语句第一次循环的时候是:i=0,k=f(2)=4,i=1.第二次循环i=1,k=f(4)=7;最好输出的结果是k=7。我是这样算的,你看一下错在哪里!
追答
第二次循环的时候应该是i=1,k=f(2)=4的,因为x还是=2的,函数f的参数并没有引用,所以只是单纯的把x的值传进函数里而已,函数里改变的x的值只是改变形参没有改变实参,如果函数是long f(int &x)那么就是你说的那个结果了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询