早教吧 育儿知识 作业答案 考试题库 百科 知识分享

运行程序的结果,为什么,#includefunc(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;return(m);}main(){intk=4,m=1,p;p=func(k,m);printf("%d",p);p=func(k,m);printf("%d\n",p);}我运行出来的答案是8,17但不知为什么,看不懂程

题目详情
运行程序的结果,为什么,
#include
func(int a ,int b )
{ static int m=0 ,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
main()
{ int k=4,m=1,p;
p=func(k,m);
printf("%d",p);
p=func(k,m);
printf("%d\n",p);
}
我运行出来的答案是8,17 但不知为什么,看不懂程序
▼优质解答
答案和解析
这是很基础的东西啊 将k m传给func中的a b(这里只是值传递 相当于拷贝了一份) func里定义了两个static变量 你可理解为它这次的值是上次计算之后的值 跟着程序走一遍 i+=m+1 i此时=3了 m=i+a+b 此时=8了 返回m用p接收 打印p=8 再次调用func函数 此时i=3 m=8 执行i+=m+1后 i=12
再执行m=i+a+b =12+4+1 =17了 返回m用p接收 此时p打印=17 有不懂的可以问我