【C语言初学】求一道题的详细解答
下述程序的输出为什么是7,14?main(){intk=4,m=1,p;p=fun(k,m);printf("%d",p);p=fun(k,m);printf("%d",...
下述程序的输出为什么是 7,14?
main()
{
int k=4,m=1,p;
p=fun(k,m);printf("%d",p);
p=fun(k,m);printf("%d",p);
}
fun(int a,int b)
{
static int m=0,i=2;
i+=m++;
m=i+m+b;
return(m);
} 展开
main()
{
int k=4,m=1,p;
p=fun(k,m);printf("%d",p);
p=fun(k,m);printf("%d",p);
}
fun(int a,int b)
{
static int m=0,i=2;
i+=m++;
m=i+m+b;
return(m);
} 展开
2个回答
展开全部
楼主程序写错了
你在主函数里都没声明下面那个函数
要么你这样写 不用去声明
#include <stdio.h>
fun(int a,int b)
{
static int m=0,i=2;
i+=m++;
m=i+m+a;
return(m);
}
main()
{
int k=4,m=1,p;
p=fun(k,m);
printf("%d",p);
p=fun(k,m);
printf("%d",p);
}
还有你结果应该是 4 12
估计你哪里写错了吧 还有函数传过来的a值都没用到
i+=m++; 等于i=i+(m++) m是先使用 后自加 第一次i=2+0=2
然后执行下一句就m就变成1了
m=i+m+b=2+1+1=4
static int m=0,i=2;是静态局部变量 也就是这样定义以后下次再运行
m i的值不会再初始化 抓住以前的值不放 第二次运行的时候
m i就是上次运行后m i的值
i=2+4=6 然后m自加变成5
m=i+m+b=6+5+1=12
你在主函数里都没声明下面那个函数
要么你这样写 不用去声明
#include <stdio.h>
fun(int a,int b)
{
static int m=0,i=2;
i+=m++;
m=i+m+a;
return(m);
}
main()
{
int k=4,m=1,p;
p=fun(k,m);
printf("%d",p);
p=fun(k,m);
printf("%d",p);
}
还有你结果应该是 4 12
估计你哪里写错了吧 还有函数传过来的a值都没用到
i+=m++; 等于i=i+(m++) m是先使用 后自加 第一次i=2+0=2
然后执行下一句就m就变成1了
m=i+m+b=2+1+1=4
static int m=0,i=2;是静态局部变量 也就是这样定义以后下次再运行
m i的值不会再初始化 抓住以前的值不放 第二次运行的时候
m i就是上次运行后m i的值
i=2+4=6 然后m自加变成5
m=i+m+b=6+5+1=12
展开全部
main()
{
int k=4,m=1,p;
p=fun(k,m);printf("%d",p);
p=fun(k,m);printf("%d",p);
}
fun(int a,int b)
{
static int m=0,i=2;//静态整形 只初始化一次
i+=m++;//第一次调用 i=2 m=1 第二次调用 i=6 m=5
m=i+m+b;//m=4 第二次调用 m=12
return(m);
}
{
int k=4,m=1,p;
p=fun(k,m);printf("%d",p);
p=fun(k,m);printf("%d",p);
}
fun(int a,int b)
{
static int m=0,i=2;//静态整形 只初始化一次
i+=m++;//第一次调用 i=2 m=1 第二次调用 i=6 m=5
m=i+m+b;//m=4 第二次调用 m=12
return(m);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询