帮忙做下VB题

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:33:05
以下程序的运行时计算过程及结果是什么样的,请高手指点!谢谢。

Option Explicit
Dim A As Integer

Private Sub Command1_Click()
Dim B As Integer
A = 1: B = 2
Print fun1(fun1(A, B), B)
Print A
Print B
End Sub
Private Function fun1(X As Integer, Y As Integer) As Integer
Dim i As Integer
For i = 1 To Y
Y = Y + 1
X = X + 1
A = X + Y
Next i
fun1 = X + Y
End Function

先运行里面的 fun1(A, B)

fun1(1, 2)
i = 1 的时候
Y = Y + 1 = 3
X = X + 1 = 2
A = X + Y = 2 + 3 = 5
同时因为调用函数 fun1 中参数使用的是默认的 byref 也就是传址的方式,
所以实参的改变,同时会改变形参的值。
这个里面A是实参,X是形参,改变了A的值,也同时改变了X的值,也就是 X = 5

i = 2 的时候
Y = Y + 1 = 4
X = X + 1 = 6
A = X + Y = 6 + 4 = 10
同时因为调用函数 fun1 中参数使用的是默认的 byref 也就是传址的方式,
所以实参的改变,同时会改变形参的值。
这个里面A是实参,X是形参,改变了A的值,也同时改变了X的值,也就是 X = 10

函数返回 X + Y 也就是 10 + 4 = 14

然后将 运行 fun1(14,4)

fun1(14, 4)
i = 1 的时候
Y = Y + 1 = 5
X = X + 1 = 15
A = X + Y = 15 + 5 = 20
这里及下面的循环虽然调用函数 fun1 中参数使用的也是默认的 byref 也就是传址的方式,
但是第一个形参是上一个函数返回的值:14,所以这里不会改变 X 的值。

i = 2 的时候
Y = Y + 1 = 6
X = X + 1 = 16
A = X + Y = 16 + 6 = 22

i = 3 的时候
Y = Y + 1 = 7
X = X + 1 = 17
A = X + Y = 17 + 7 = 24

i = 4 的时候
Y = Y + 1 = 8
X = X + 1 = 18
A = X + Y =