c语言程序运行结果

来源:百度知道 编辑:UC知道 时间:2024/05/10 17:04:24
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);
}
输出 ?
请写出原因。答案是5,25

先看主程序
main() {
int a = 7, b = 5;
x = a+b; y = a-b;
到这一步.x=12,y=2是没错的..但是下面..
num();
//调用子程序,那子程序是什么呢.
void num() {
extern int x, y; int a=15, b=10;
x=a-b; y=a+b;
}
//没错,就是这段.
因为调用了子程序.所以主程序内先做出来的值就被子程序覆盖掉了..所以最后结果是5.25..如果把num(); 放到int a=7前面..那结果就会反过来,就应该是12.2

12,2

void num() {
extern int x, y; int a=15, b=10;
x=a-b; y=a+b;//因为X和Y为外部变量 所以会影响主函数里X与Y的值输出
}
int x, y; //注意,X,Y定义的是外部变量 在函数中可以改变值
main() {
int a = 7, b = 5;
x = a+b; y = a-b; //这时X=12,Y=2;
num(); //函数
printf("%d, %d\n", x, y); //答案 5,25
}