【C语言初学】求一道题的详细解答

下述程序的输出为什么是7,14?main(){intk=4,m=1,p;p=fun(k,m);printf("%d",p);p=fun(k,m);printf("%d",... 下述程序的输出为什么是 7,14?
main()
{
int k=4,m=1,p;
p=fun(k,m);printf("%d",p);
p=fun(k,m);printf("%d",p);
}
fun(int a,int b)
{
static int m=0,i=2;
i+=m++;
m=i+m+b;
return(m);
}
展开
 我来答
候补小情人
2010-07-09 · TA获得超过119个赞
知道答主
回答量:30
采纳率:0%
帮助的人:0
展开全部
楼主程序写错了
你在主函数里都没声明下面那个函数
要么你这样写 不用去声明
#include <stdio.h>
fun(int a,int b)
{
static int m=0,i=2;
i+=m++;
m=i+m+a;
return(m);
}
main()
{
int k=4,m=1,p;
p=fun(k,m);
printf("%d",p);
p=fun(k,m);
printf("%d",p);
}

还有你结果应该是 4 12
估计你哪里写错了吧 还有函数传过来的a值都没用到
i+=m++; 等于i=i+(m++) m是先使用 后自加 第一次i=2+0=2
然后执行下一句就m就变成1了
m=i+m+b=2+1+1=4

static int m=0,i=2;是静态局部变量 也就是这样定义以后下次再运行
m i的值不会再初始化 抓住以前的值不放 第二次运行的时候
m i就是上次运行后m i的值
i=2+4=6 然后m自加变成5
m=i+m+b=6+5+1=12
kirayamato201
2010-07-09 · TA获得超过365个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:272万
展开全部
main()
{
int k=4,m=1,p;
p=fun(k,m);printf("%d",p);
p=fun(k,m);printf("%d",p);
}
fun(int a,int b)
{
static int m=0,i=2;//静态整形 只初始化一次
i+=m++;//第一次调用 i=2 m=1 第二次调用 i=6 m=5
m=i+m+b;//m=4 第二次调用 m=12
return(m);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式