C语言问题 有以下程序: #include<stdio.h> int f(int m) { static int n=0; 求详解

有以下程序:#include<stdio.h>intf(intm){staticintn=0;n+=m;returnn;}voidmain(){intn=0;printf... 有以下程序:
#include<stdio.h>
int f(int m)
{ static int n=0;
n+=m;
return n;
}
void main()
{ int n=0;
printf(“%d,”,f(++n));
printf(“%d\n”,f(n++));
}
程序运行后的输出结果是 A
A)1,2 B)1,1 C) 2,3 D) 3,3
展开
 我来答
kaixingui2012
推荐于2017-09-02 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6317万
展开全部
#include<stdio.h>
int f(int m)
{
static  int n=0; //静态变量,只初始化一次,第二码册基次为上一次的剩余结果
n+=m;
return n; //第一次n=1   第二次m=1,n+=m=2
}
void main()
{
int n=0;
printf("%d,",f(++n));   //++n,先自增,后迟谨调用n,相当于调用f(1)
printf("%d\n",f(n++));  //n++,先调用n,后自增,相当于调用f(1)
}

结姿枣果为1,2

更多追问追答
追问
有点明白了,还是有点小问题,void main()中的n是不是和int f(int m)中的n不同呢?
追答
当然是不同的两个变量n
它们的定义分别出现在两个函数体中,所以,是不同的!
#include
int f(int m)
{
static int n=0; //这是子函数中的定义
。。

}
void main()
{
int n=0; //这是主函数中的定义
。。
}
百度网友d68df1f156
2015-01-03 · 超过21用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:40.9万
展开全部
这题主要考++n和n++的区如亏别
++n:耐橡毁将n的值+1后作为表达式的昌备值
n++:将n的值作为表达式的值后n自加1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
零下一度的沙漠
2015-01-03 · TA获得超过563个赞
知道小有建树答主
回答量:1690
采纳率:0%
帮助的人:357万
展开全部
int f(int m)
{ static int n=0;
n+=m;
return n;
}函数中的态梁n是static类型祥闭掘 值是保存上次运行的谨核值
追问
void main()中的 n也是静态变量吗
追答
不是啊   void main中的n不是静态变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fly随时随意
2020-02-28
知道答主
回答量:3
采纳率:0%
帮助的人:1843
展开全部
m=1怎来的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式