关于一道C语言题,求详解,急求

#include<stdio.h>intx=1;voidfx(intp){x=10;x+=p++;printf(“%d%d\n”,x,p);}voidmain(){int... #include <stdio.h>
int x=1;
void fx(int p)
{ x=10;
x+=p++;
printf(“%d %d\n”,x,p);
}
void main()
{ int a=5;
fx(a); x+=a;
printf(“%d %d\n”,x,a);
}
运行结果: 15 6
20 5
请问这答案(第一次打印x=15,p=6;第二次打印x=20,a=5)对吗?无论对不对请详细讲解一下怎么得到的20和5这组答案?一定要详细呀。另外,主函数的x带的是全局变量的值1吗?如果不是,那要全局变量干什么用呢?谢谢啦!!!!!
展开
 我来答
linxin66
2011-02-24 · TA获得超过534个赞
知道小有建树答主
回答量:283
采纳率:0%
帮助的人:134万
展开全部
在主函数里 是先执行fx 这个函数的,而执行这个函数得到的值X=15, 而后x=x+a=15+5=20.,a=5; 所以输出是 20 和 5 ,主函数的x带的是全局变量的值是fx函数得到的x的值15,而不是定义全局变量的初始值,也不是fx函数里x的初值 在这个程序里用全局变量无非是想说明全局变量x在不同时候是不同的值的,引用时要注意当前全局变量的值。,以及注意区分全局变量和局部变量。
yangjinwen6610
2011-02-24 · TA获得超过410个赞
知道答主
回答量:60
采纳率:0%
帮助的人:42.8万
展开全部
主要是你在FX函数中没有申明局部变量,那么,程序自动套用了你声明的全局变量。但是你的第一个打印应该是16才对,++的优先级高于+=,p++=6,X+=6=>16
当A被FX调用结束是,X=16,A=6.那也就清楚了最后的打印为 22,6;
运行结果:
16 6
22 6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ratelan
2011-02-24
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
答案对!
main()函数中,调用fx(a);后 x=15 a=5 如果你理解这点了,就不难理解第2次打印为什么是20 5了!
这里你一定奇怪,为什么a=5而不是6,这是典型的局部变量和全局变量作用范围问题。
在void fx(int p)函数里,虽然有x+=p++; 但这里的p++只加了fx函数内部的局部变量,并不会修改main函数里定义的int p;
fx(int p)内定义的p是局部变量,main()里定义的int a=5;也是局部变量,作用域都在各自函数内,不能在fx()函数里修改main函数里的局部变量。而x是全局变量,作用域遍及两个函数,两个函数都可以访问并修改x。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式