这题怎么做呀 详细一点 感谢
第一次不是调用c=3吗static等于3354等于12static不释放还是3吧为什么第二个结果是10...
第一次不是调用c=3吗 static等于3 3 5 4 等于12 static 不释放还是3吧 为什么第二个结果是10
展开
2个回答
展开全部
这题的输出是12,10,16。
注意:printf从右向左计算输出变量列表,本题中先计算fun(fun(c)),再计算fun(a),最后计算fun(c)。
fun(fun(c))先计算fun(c)反回3(a由实参c传来值3)+5(fun内的定义b是4,b++后是5)+1(fun内的static变量初值默认是0,c++后是1——注意不要与主函数中的c混淆了)=9;那么fun(fun(c))就是fun(9),再返回9+5+2(fun中的c是static变量,上次1会保留,这次c++为2)=16。
fun(a)就是fun(2),返回2+5+3(这个3是c为static的原因)=10。
最后fun(c)就是fun(3),返回3+5+4(static的原因)=12。
最后从左至右输出就是12,10,16。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询