VB 全局变量问题:麻烦解释一下运行过程,以及说明结果为什么是9 1 4 9(很急,在线等!)

VB全局变量问题:麻烦解释一下运行过程,以及说明结果为什么是9149(很急,在线等!)PublicaAsInteger,bAsInteger,cAsIntegerPriv... VB 全局变量问题:麻烦解释一下运行过程,以及说明结果为什么是9 1 4 9(很急,在线等!)

Public a As Integer, b As Integer, c As Integer
Private Function s() As Integer
Dim a As Integer, b As Integer
a = a * a
Me.b = Me.b * Me.b
c = c * c
s = a + b + c
End Function

Private Sub Form_Click()
Dim sum As Integer
a = 1: b = 2: c = 3
sum = s()
Print sum; a; b; c
End Sub
展开
 我来答
悲伤0谢幕
2015-06-30 · TA获得超过327个赞
知道小有建树答主
回答量:379
采纳率:0%
帮助的人:248万
展开全部
'当局部变量与全局变量同名是,在局部变量的作用域下,全局变量被屏蔽,不可见
Public a As Integer, b As Integer, c As Integer
Private Function s() As Integer
    Dim a As Integer, b As Integer'a与b是局部变量,把全局变量屏蔽了,a.b均为0
    a = a * a'这个操作没有影响到全局变量。这时局部变量a为0
    Me.b = Me.b * Me.b'这个加上me.,指明是全局变量的b 。这时全局变量b为4
    c = c * c'这个因为没有屏蔽,是操作全局变量。这时全局变量b为9
    s = a + b + c’因为a和b是句柄变量并且值为0,c为9,使用返回值为9
End Function

Private Sub Form_Click()
    Dim sum As Integer
    a = 1: b = 2: c = 3'将全局变量a.b.c赋值
    sum = s()'9
    Print sum; a; b; c
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
freeeeeewind
2015-06-30 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1359万
展开全部
点击窗体后,全局变量先被赋值:
a = 1
b = 2
c = 3
当调用函数s后,由于在函数s内定义了与全局同名的局部变量 a 和 b,这样
a = a *a 实际是对局部变量执行运算,局部变量 a = 0
Me.b = Me.b * Me.b 对全局变量b运算 ,全局 b = 4,局部b =0

c = c * c,对全局变量运行运算 , 全局c = 9
s = a + b + c 中,a是局部的,b是局部,c是全局的,所以s=9
所以,Print sum; a; b; c 中 sum =9, a=1(全局), b=4(全局),c=9(全局)

9 1 4 9
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
149005501
2015-06-30 · TA获得超过8.6万个赞
知道顶级答主
回答量:7.9万
采纳率:90%
帮助的人:1.3亿
展开全部
Public a As Integer, b As Integer, c As Integer ‘这时,都是0

Form_Click()时

Dim sum As Integer ‘sum是0
a = 1: b = 2: c = 3 ‘a = 1: b = 2: c = 3
sum = s() 调用过程,我们进去分析

Dim a As Integer, b As Integer '这时过程里的a和b都是0 但全局的a=1,b=2并没有变
a = a * a ‘a=0*0=0
Me.b = Me.b * Me.b '这里调用的是全局变量 b =2+2=4
c = c * c '由于没有定义c,这里的c又是全局变量,于是:c=3*3=9
s = a + b + c ‘过程返回值是 s=a(过程)+b(过程)+c(全局)=0+0+9 ,而全局B并没有用到
于是返回s=9

'于是sum=9
Print sum; a; b; c '最后显示时:sum=9 a=1(全局变量没有变过),b=4(全局变量在过程中变4了),c=9(全局变量在过程中变9了)
结束,显示:9 1 4 9
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式