关于一道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吗?如果不是,那要全局变量干什么用呢?谢谢啦!!!!! 展开
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吗?如果不是,那要全局变量干什么用呢?谢谢啦!!!!! 展开
3个回答
展开全部
主要是你在FX函数中没有申明局部变量,那么,程序自动套用了你声明的全局变量。但是你的第一个打印应该是16才对,++的优先级高于+=,p++=6,X+=6=>16
当A被FX调用结束是,X=16,A=6.那也就清楚了最后的打印为 22,6;
运行结果:
16 6
22 6
当A被FX调用结束是,X=16,A=6.那也就清楚了最后的打印为 22,6;
运行结果:
16 6
22 6
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案对!
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。
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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询