有以下程序,为什么2个printf输出的结果不一样
1个回答
展开全部
首先,这个问题涉及了一个问题:
1,全局变量被局部变量隐藏的问题
sub1函数是带有参数的,而且参数变量名与全局域的相同,虽然不会产生错误,但是,在sub1的区域中会隐藏掉全局域中的m,n变量,使用的是sub1带入的参数m,n;即在调用sub1函数时,使用的不是全局的m,n,不会改变全局域m,n,而是改变局部变量m,n;
sub2不带参数,使用的也是m,n,编译器会去寻找m,n,在全局域找到了,所以使用的是全局域的m,n,会改变全局域m,n
当sub1执行后,m,n是全局域的值1,2,所以输出是1,2
当sub2执行后,全局域m,n改变,所以输出是2,4
题主可以查下隐藏的概念(其实也就是弄清作用域的概念):
http://baike.baidu.com/link?url=Zd9C4acyErFdBL1AWL0ByMPXe2G8O8lBIhuSzUaRn3uJN7hxG_viavXlrNToZfg6QuoIPI3tIV0sohTBfhawya
1,全局变量被局部变量隐藏的问题
sub1函数是带有参数的,而且参数变量名与全局域的相同,虽然不会产生错误,但是,在sub1的区域中会隐藏掉全局域中的m,n变量,使用的是sub1带入的参数m,n;即在调用sub1函数时,使用的不是全局的m,n,不会改变全局域m,n,而是改变局部变量m,n;
sub2不带参数,使用的也是m,n,编译器会去寻找m,n,在全局域找到了,所以使用的是全局域的m,n,会改变全局域m,n
当sub1执行后,m,n是全局域的值1,2,所以输出是1,2
当sub2执行后,全局域m,n改变,所以输出是2,4
题主可以查下隐藏的概念(其实也就是弄清作用域的概念):
http://baike.baidu.com/link?url=Zd9C4acyErFdBL1AWL0ByMPXe2G8O8lBIhuSzUaRn3uJN7hxG_viavXlrNToZfg6QuoIPI3tIV0sohTBfhawya
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询