2及c语言求高手解答……

(14)以下程序运行后的输出结果是〔20,25〕inta=5;fun(intb){staticinta=10;a+=b++;printf("%d",a);}main(){... (14)以下程序运行后的输出结果是 〔20,25〕
int a=5;
fun(int b)
{ static int a=10;
a+=b++;
printf("%d ",a);
}
main()
{ int c=20;
fun(c);
a+=c++;
printf("%d\n",a);
}
题目看不太懂,求解答过程,谢谢
展开
 我来答
erimy
2010-08-03 · TA获得超过118个赞
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:153万
展开全部
我来告诉你过程:
1。第一个输出在调用fun(c)中,调用fun(c)时,里面的a是静态局部变量,会覆盖掉第一行的全局变量int a=5。此时a=10,b=c=20,那么a+=b++也就是
a=a+(b++)=>a=10+20=30,同时b=b+1=21了。能明白?
2.第二个输出在main中的printf中,此时的a是全局变量a=5,fun中定义的a只在fun函数内是有效的,明白?调用fun(c)时,传递给fun的只是c的值20,c本事的值并不会改变,仍然为20,明白?那么a+=c++的值也就是a=a+(c++),也就是
a=5+20=25了,同时c=c+1=21了。
输出结果就是30,25
过程大致如此,能明白吗?
tdoal
2010-08-03 · TA获得超过460个赞
知道答主
回答量:353
采纳率:0%
帮助的人:395万
展开全部
输出结果是30,25
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luopeng0404
2010-08-03 · TA获得超过120个赞
知道答主
回答量:123
采纳率:0%
帮助的人:0
展开全部
明明是30 25 为什么你会说是20 25的呢? 这里的++都是在后面的 所以都是先赋值在进行++操作的
答案30 25 也很显然
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小王哦哦
2010-08-03 · TA获得超过775个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:138万
展开全部
我也不懂,帮不上忙の
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
3050122050
2010-08-03 · TA获得超过626个赞
知道小有建树答主
回答量:311
采纳率:0%
帮助的人:147万
展开全部
我也不觉得是20 25
应该是31 26
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式