一个C语言题~~下面程序段的是多少

#include <stdio.h>
intf(int x)
{ static y=1;
y++;
x+=y;
return x;}
void main()
{ int k;
k=f(3);
printf("%d %dn",k,f(k)); 主要解释一下 我知道答案 谢谢 我是菜鸟

首先打印出来的值有两个: K 和 f(k).

1.k = f(3) 就是调用 int f(int x) 这个函数, 传入的参数是3, 即 x=3. 然后你代入进去,

static y=1;
y++; //y=1+1 =2;
x+=y; // x = x+2 = 3+2 = 5
return x; //所以返回的x =5 即 k=f(3) = 5.

2. f(k) = f(5) //由第一步得到的k值代入。

static y=1; //这里注意:y 是静态局部变量,只在第一次调用该函数时,进行初始化。 以后继续调用时,沿用上次的值。所以第二次调用时,其实这句话并没有执行,实际运行到这里: y=2.(具体上网查static 用法)。
y++; //y=2+1 =3
x+=y; // x = x+3 = 5+3 = 8
return x; //所以返回的x =8 即 f(5) = 8.

最后打印的数据 应该是 5 , 8. 打道回府~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-08-19
#include <stdio.h>
int f(int x)
{ static int y=1;
y++;//y加1后把y原来的值覆盖
x+=y;
return x;}
void main()
{ int k;
k=f(3);
printf("%d %d\n",k,f(k));//换行错了
}
5 8
k=f(3)=3+(1++)=3+2=5
f(k)=f(5)=5+(2++)=8//注意y的值 ,每调用一次f(),y的值加1
第2个回答  2009-08-19
在某函数中看到static变量时你就得记住:第一次调用该函数时,它等于给它赋的初值,在该题中为1;第二次调用时它等于第一次调用结束时的值在本题中即为2.
所以结果为5 8
是个吉利的数
第3个回答  2009-08-19
5,8

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网