int f(int a) {int b=0; static int c=3

intf(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}voidmain(){inta=2,j;for(j=0;j<3... int f(int a)
{int b=0;
static int c=3;
b++;c++;
return(a+b+c);
}
void main()
{int a=2,j;
for(j=0;j<3;j++)
printf("%4d",f(a));}
展开
 我来答
风若远去何人留
推荐于2018-03-13 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450131
专业C/C++软件开发

向TA提问 私信TA
展开全部

对于主函数, 循环执行3次, 每次调用函数f的参数都是a=2. 即调用三次f(2) 打印返回值

对于函数f。 调用三次, 每次都是参数a=2, 三次参与a+b+c运算时都是a=2

b是局部变量, 每次初始化为0,之后自加为1。三次参与a+b+c运算时都是b=1

c是静态变量, 每次是上次退出值。 每次调用c自加。 所以三次参与a+b+c运算时, c依次为4 5 6

于是返回值依次为7 8 9

输出为

   7   8   9

每个前面三个空格。 

zmfgczmf
2012-08-23 · 超过12用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:41.7万
展开全部
输出结果是 7 8 9
因为每次进入f函数中b值都会被初始化为0,而c是静态变量,只在第一次进入该函数时声明一次,以后的值会持续变化,而不会变成初始值了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2018-03-13 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2844万
展开全部
#include <stdio.h>
int f(int a) 
{
int b=0; 
static int c=3;
b++;
c++; 
return(a+b+c); 

void main()
{
int a=2,j;
for(j=0;j<3;j++)
printf("%4d",f(a));   //第一次 a=2 b=0 c=3 b++ c++ 2+1+4 = 7  
 // 第二次 a=2 b=0 c=4 因为是static变量 所以只初始化一次 那么不用说就是8 了 第三次9
}
7   8   9Press any key to continue
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式