鱼C论坛

 找回密码
 立即注册
查看: 4115|回复: 9

高手都来了,展现实力的时刻到了!!都来吧!!

[复制链接]
发表于 2013-1-7 22:17:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么输出是29呢?求详解

c程序.zip

334 Bytes, 下载次数: 32

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-7 22:32:18 | 显示全部楼层
只好自己顶一下了,求大虾!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-8 00:03:35 | 显示全部楼层
求解  期待大侠解答
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-8 07:58:48 | 显示全部楼层
大虾快来啊。甚是郁闷!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-8 08:39:05 | 显示全部楼层
if与else中的静态变量 a 都只具有语句块作用域,分别只作用于if下的语句块与else下的语句块,且在语句块范围内覆盖掉了函数中开头的的静态变量 a 。
于是函数三次调用先后返回 8, 8 , 11。
再加上全局变量 a = 2;
就是29、、。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-8 08:55:26 | 显示全部楼层

那子函数中的变量名都一样,这样不会相互影响吗?
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-8 11:14:04 | 显示全部楼层
大虾说的有理,但是能在具体点嘛
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-8 12:33:58 | 显示全部楼层
卿枫~凌 发表于 2013-1-8 08:55
那子函数中的变量名都一样,这样不会相互影响吗?

函数开头定义的变量具有函数作用域,而if else 语句块中定义的变量只在语句块中起作用(属于小范围),小范围作用的变量在它的作用范围内会覆盖掉更大范围作用的变量。
也就是虽变量名一样,但是作用范围不同,是三个不同的变量。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-8 13:15:30 | 显示全部楼层
楼上正解,注意变量的作用域
if-else也是小区域
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-8 18:50:41 | 显示全部楼层
长见识了真,那就是说小范围的变量将大范围的变量覆盖的时候,大范围的变量相当于压栈了是吧!在区域快用完后,再出栈是吧!真牛
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-9 12:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表