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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,在一个函数内定义了一个与变量名相同的局部变量(形参)时,局部变量有效,而全局变量在该函数内不起作用。

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

以上是关于C语言,变量作用域的问题。。。 #include <stdio.h> int x,y,a=15,b=10; void num() x=a-b; y=a+b; v的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式bug粉碎机之C语言变量作用域的坑

☀️光天化日学C语言☀️(36)- 作用域

C语言中的局部变量和全局变量

C语言中的局部变量和全局变量

江哥带你玩转C语言 | 15- 修饰符和预处理指令

江哥带你玩转C语言 | 15- 修饰符和预处理指令