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 展开
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 展开
3个回答
展开全部
'当局部变量与全局变量同名是,在局部变量的作用域下,全局变量被屏蔽,不可见
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
点击窗体后,全局变量先被赋值:
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
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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询