c语言
下面的程序运行的结果是(1)(2)
#include<stdio.h>
main()
{
int k=4,m=1,p;
p=fun(k,m);
printf("%d",p);/*(1)*/
printf("%d",p);/*(2)*/
}
fun(int a,int b)
{
static int m=0,i=2;
i+=m+1;
m=i+a+b;
return (m);
}
第一个是8,第二个是17,,,,为什么呢?
因为static int是寄存器变量,初始值只有一次,再次用到这个变量时不再初始化赋值,所以第二个是17
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-02-16
两个都应该是8啊追问
呵呵,不是,我也在电脑上跑了程序,就是8和17,不过现在搞懂了
追答那我不才
可是p=fun()只被调用了一次
而printf两次,
为什么两次printf的结果会不一样?
printf又没有调用啊,求解