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

#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吗?如果不是,那要全局变量干什么用呢?谢谢啦!!!!!

在主函数里 是先执行fx 这个函数的,而执行这个函数得到的值X=15, 而后x=x+a=15+5=20.,a=5; 所以输出是 20 和 5 ,主函数的x带的是全局变量的值是fx函数得到的x的值15,而不是定义全局变量的初始值,也不是fx函数里x的初值 在这个程序里用全局变量无非是想说明全局变量x在不同时候是不同的值的,引用时要注意当前全局变量的值。,以及注意区分全局变量和局部变量。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-24
主要是你在FX函数中没有申明局部变量,那么,程序自动套用了你声明的全局变量。但是你的第一个打印应该是16才对,++的优先级高于+=,p++=6,X+=6=>16
当A被FX调用结束是,X=16,A=6.那也就清楚了最后的打印为 22,6;
运行结果:
16 6
22 6
第2个回答  2011-02-24
答案对!
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。