c语言第一剑 为什么m=20,打印出来的结果却是10呢(局部变量和全局变量)**
#局部变量
这是一个变量m,当他运行的时候会打印出 10 。
**
我在主函数外新添一个m=20.会打印出不同的结果吗
结果是不会
当我在main函数外定义m=20时,打印出来的却还是10。
这是为什么呢
我们先引出一个定义
局部变量
局部变量所在的局部范围
(局部变量的生命周期从进入作用域开始,出作用域结束)
全局变量
全局变量
在所有函数外部定义的变量称为全局变量
它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。
在了解了局部变量和全局变量的定义后,我们来看看这些定义到底是什么意思。
那么为什么同时10和20同是m的值,打印出来的却是10呢
当全局变量和局部变量同名时,在局部范围内全局变量被“屏蔽”,不再起作用。或者说,变量的使用遵循就近原则,如果在当前作用域中存在同名变量,就不会向更大的作用域中去寻找变量。简单的来说,当全局变量和局部变量同名时,局部变量的优先度高于全局变量,这就解释了为什么会打印10。
所以我们要经量避免局部变量和全局变量名相同。