双向 单向ssl区别:C语言问题4

来源:百度文库 编辑:中科新闻网 时间:2024/05/13 03:10:36
以下程序的运行结果是 5,25 。
#include "stdio.h"
void num()
{ extern int x,y;int a=15,b=10;
x=a-b;
y=a+b;
}
int x,y;
main()
{ int a=7,b=5;
x=a+b;
y=a-b;
num( );
printf("%d,%d\n",x,y);
}
帮忙解释啊.我看不懂

外部变量声明一次就在其后的整个程序有效了,除非某个函数里包含与其名字相同的变量。这个程序没有出现这样的情况,外部声明的和num()中声明的其实都是同一组变量x,y所以只要看对它们的修改情况就行了。
首先开始执行主函数,x=a+b;y=a-b;这时候x=12,y=2,然后调用num(),在num()中,对x,y进行了修改(因为是外部变量,所以操作的是同样的内存空间),x=a-b;y=a+b;以后,x=5,y=25,调用完毕,返回主函数接着执行printf("%d,%d\n",x,y);
所以最后的结果是5,25

运行结果是程序num()的结果x=5,y=25

extern int x,y;表示x,y在函数外部声明过了,使用外部的那个x,y
所以,
x=a-b=15-10=5
y=a+b=15+10=25

我看了楼上二位的回答,我个人认为,entern int x y是在函数外部声明过,但并没有输入值,所以我认为最后,x y的值应该是12和2。走主函数,并输入结果。

extern int x,y;表示x,y在函数外部声明过了,使用外部的那个x,y
所以,
x=a-b=15-10=5
y=a+b=15+10=25
我同意这个观点.

同意上楼的说法,x,y在main()外声明后就成了全局变量了.他们的值由最后调用他们的函数改变其值.因此最后x=5;y=25.