int f(int n); main() { int a=3,s; s=f(a); s=s+f(a); printf("%d\n",s); } int f(int n)25992

{staticinta=1;n+=a++;returnn;}语句n+=a++中的a=3还是a=1?它是静态局部变量,主函数中的a=3是对整个程序起作用吗?... { static int a=1;
n+=a++;
return n;
} 语句n+=a++中的a=3还是a=1?它是静态局部变量,主函数中的a=3是对整个程序起作用吗?
展开
 我来答
就是佐
2011-03-25 · TA获得超过138个赞
知道答主
回答量:124
采纳率:0%
帮助的人:88万
展开全部
在s=f(a)的时候;a=1;
static 在编译的时候就分配存储空间一直到程序执行完前再释放
也就是 不释放空间 、、、
所以第一次调用函数执行n+=a++;时 a行加 再进行自增。 执行完后空间没有释放,
根据静态局部变量的特点, 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。a=2了。
在执行 s=s+f(a)时 n+=a++;……等于 n+n+a 这时a保留了上次的值为2了;
2)它是静态局部变量,主函数中的a=3是对整个程序起作用吗?
个人觉得不能这么问,因为这个a它并不是什么宏定义啊之类的,所以不存在什么说对整个程序起作用,它的作用范围也就是只能在定义该变量的函数内是使用。
3) 语句n+=a++中的a=3还是a=1?
不知道LZ是不是搞错了?这里的a和主函数中的a并没有什么关系,在不同函数中定义的。
这里的n就是对应着主函数中的a ,函数调用 值的对应关系。
这里的a 就是指int f(int n) 函数定义的a。它定义了a=1.但是随着程序执行a会变(前面解释了)
希望对你有用 ,发现有错联系我
结果是 第一次s为4 后来s为9
xiao_xiao_无悔
2014-08-11
知道答主
回答量:6
采纳率:0%
帮助的人:5776
展开全部
1、n+=a++中的a=1
2、a=1的作用范围是从函数的开始到函数的结束,,而且函数运行结束后内存不会释放,即a的值保留到下次函数的调用。
3、主函数中a=3的范围是从int a=3开始,,在s=f(a)和s=s+f(a)中,,a的取值都应是3.
4、程序的计算结果为9。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
张效群
2011-04-01
知道答主
回答量:65
采纳率:0%
帮助的人:18.3万
展开全部
a=1的,运算完这一步之后 就是2了,不是3哦,此处局部变量要替换全局变量a的哦;它是静态的,这是个时间概念,意思是在编译时分配空间;而你问的a=3是否对整个程序起作用,是的,但是当局部变量中有定义时,优先使用局部变量的哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式