求vb过程解释,具体的做法,不要只是答案。
Dimx%,y%,z%PrivateSubForm_click()DimxAsIntegerx=1y=2CallAA(y+1)z=BB(x)Printx,y,zEndSu...
Dim x% , y%,z%
Private Sub Form_click()
Dim x As Integer
x = 1
y = 2
Call AA(y + 1)
z = BB(x)
Print x, y, z
End Sub
Public Sub AA(ByVal z%)
y = z + x
z = x + y
End Sub
Public Function BB(y%)
y = y + 1
BB = x + y
End Function
求具体解题的步骤。 展开
Private Sub Form_click()
Dim x As Integer
x = 1
y = 2
Call AA(y + 1)
z = BB(x)
Print x, y, z
End Sub
Public Sub AA(ByVal z%)
y = z + x
z = x + y
End Sub
Public Function BB(y%)
y = y + 1
BB = x + y
End Function
求具体解题的步骤。 展开
2个回答
展开全部
这里的难点在于主程序Sub Form_click()中定义了一个与窗体级变量同名的x变量。需要注意两个同名变量的作用域。同时,AA函数中的参数z,BB函数中的参数y,也是过程级变量,不影响到窗体级变量y,z的值。
另外,调用子程序过程中,AA是值传递,不影响回传值,BB会被当成引用传递,会影响调用函数时的变量的值。
执行call AA(y+1)这个时:相当于执行了 AA(3)
在AA中的运算是:y=z+x
此时,z是参数变量,传过来的是y+1=3,x是窗体级变量,为0,所以y=z+x执行的结果是y=3
z=x+y=3,这里的x仍然是窗体级的那个x
执行完AA(3)以后,y=3,z=3,窗体级的那个x=0,没有变化。
执行BB(x)时,相当于执行了BB(1),这里的x是主程序中定义的过程级变量x=1
在BB中,
y=y+1,这个y,是参数变量,因此,这个y值不影响窗体级的变量y。即y=1+1=2,同时,y作为函数参数,又会把值2回传给调用时的参数,即BB(x)中的x,此时,过程级的x=2。BB中的这个y,是参数变量,因此,这个y值不影响窗体级的变量y。
BB=x+y=0+2=2,这里的x还是窗体级那个x,主程序中定义的x变量,只在主程序过程中起作用。
BB=2,又将这个值传回给调用它的z,z=BB(x)
这样,最后的结果就是,print,x,是过程级的x,因为是在主程序中print的。y,z都是窗体级的变量。
x=2,y=3,z=2
另外,调用子程序过程中,AA是值传递,不影响回传值,BB会被当成引用传递,会影响调用函数时的变量的值。
执行call AA(y+1)这个时:相当于执行了 AA(3)
在AA中的运算是:y=z+x
此时,z是参数变量,传过来的是y+1=3,x是窗体级变量,为0,所以y=z+x执行的结果是y=3
z=x+y=3,这里的x仍然是窗体级的那个x
执行完AA(3)以后,y=3,z=3,窗体级的那个x=0,没有变化。
执行BB(x)时,相当于执行了BB(1),这里的x是主程序中定义的过程级变量x=1
在BB中,
y=y+1,这个y,是参数变量,因此,这个y值不影响窗体级的变量y。即y=1+1=2,同时,y作为函数参数,又会把值2回传给调用时的参数,即BB(x)中的x,此时,过程级的x=2。BB中的这个y,是参数变量,因此,这个y值不影响窗体级的变量y。
BB=x+y=0+2=2,这里的x还是窗体级那个x,主程序中定义的x变量,只在主程序过程中起作用。
BB=2,又将这个值传回给调用它的z,z=BB(x)
这样,最后的结果就是,print,x,是过程级的x,因为是在主程序中print的。y,z都是窗体级的变量。
x=2,y=3,z=2
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询