德州市马善军逮起来了:c语言的问题!

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/27 22:59:14
#include <stdio.h>
int s();

int x,y;
main()
{
int n;
x=1;y=2;
n=s();
printf("x=%d,y=%d,n=%d",x,y,n);
}

int s()
{
int z;
x=3;y=4;
z=x+y;
return(z);
}

为什么答案是3,4,7而不是1,2,7呢??

因为你定义了x,y为全局变量
同一文件中所有函数都能引用全局变量的值
如果一个函数改变了全局变量的值 就能影响到其他函数

如果原程序改为
#include <stdio.h>
int s();

//int x,y; 去掉全局变量 x,y

main()
{
int n;
int x,y; //在各函数内分别定义x,y
x=1;y=2;
n=s();
printf("x=%d,y=%d,n=%d",x,y,n);
}

int s()
{
int z;int x,y; //在各函数内分别定义x,y

x=3;y=4;
z=x+y;
return(z);
}

那么结果就是楼主所说的1,2,7

n=s();是调用了s()函数,当然要printf:x=3;y=4;
z=x+y;后的结果了!

前面的x=1;y=2;是个陷阱啊!

你运行一下就知道了!