C语言,变量作用域的问题。。。 #include <stdio.h> int x,y,a=15,b=10; void num() { x=a-b; y=a+b; } v

#include <stdio.h>
int x,y,a=15,b=10;
void num()
{ x=a-b;
y=a+b; }

void main()
{
int a=7,b=5;
x=x+a;
y=y-b;
num();
printf(“%d,%d\n”,x,y);
}
程序输出为什么是5,25啊?有一点蒙了。。
mian()里面不是有了a=7,b=5吗,为什么到了num()中不用a=7,b=5而是用上面的a=15,b=10呢。。。

其实很容易区分。

你在程序加多句输出就可以进行比较区分了。

原程序中的主函数printf输出的只是num函数数据


#include <stdio.h>   

int x,y,a=15,b=10;   

void num()    

{ x=a-b;     

y=a+b;    } 

 

 void main()  

{

int a=7,b=5;     

x=x+a;     

y=y-b;  

printf("%d,%d\n",x,y);//输出主函数中x,y的数据

num();    

printf("%d,%d\n",x,y); //输出num函数数据

}



总的来说:全局函数使用时要注意两点:

1,全局变量可以在多个函数中使用,当其中一个函数改变了全局变量的值,可能会影响其他函数的执行结果。

2,在一个函数内定义了一个与变量名相同的局部变量(形参)时,局部变量有效,而全局变量在该函数内不起作用。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-12
假如num总是使用调用它的函数的变量,那么当不同的函数调用它的时候,结果就会很奇怪,而且编译器和程序都需要额外的代码来处理……
第2个回答  2013-06-12
main 函数中的 a b 是局部变量 它的作用域只在 main 中也就是说 在函数 num 中是看不到 main 中的变量的,
而前面定义的 变量 x y a b 是全局变量在程序中的任何位置都是可以看到的也是可以使用的,只不过 在main函数中又重新定义了 变量 a b 这样全局变量就隐藏起来了,如果要使用全局变量a 不必须这样调用 ::a 这样系统就知道你调用的是全局变量,而不是在函数中定义的变量了本回答被提问者采纳
第3个回答  2013-06-12
你main()中的a,b又没有传值num(),num中没有定义a,b;当然是用全局变量中的a,b啦。。