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);
}
题目看不太懂,求解答过程,谢谢 展开
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);
}
题目看不太懂,求解答过程,谢谢 展开
5个回答
展开全部
我来告诉你过程:
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
过程大致如此,能明白吗?
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
过程大致如此,能明白吗?
展开全部
输出结果是30,25
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
明明是30 25 为什么你会说是20 25的呢? 这里的++都是在后面的 所以都是先赋值在进行++操作的
答案30 25 也很显然
答案30 25 也很显然
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也不懂,帮不上忙の
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也不觉得是20 25
应该是31 26
应该是31 26
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询