c语言 下面的程序运行的结果是(1)(2) #include<stdio.h> main()

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又没有调用啊,求解

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网