建立一个EXE工程,输入代码:
Sub Form1_Shown(hWndForm As hWnd, UserData As Integer)
Dim sum As Integer
For i As Integer = 5 To 1 Step -1
sum=sum+Multiply(i)
Next
Print sum
End Sub
Function Multiply(ByRef n As Integer) As Integer
Dim temp As Integer
temp=1
Do While n > 0
temp = temp * n
n=n-1
Loop
Multiply=temp
End Function
- 运行程序,在控制台上输出120,而正确的结果是153,这是因为参数传递使用了引用传递方式ByRef,导致传进去的n=5直接被改变成了1,所以只求出了5!=120。
- 改正的方法有两种,一是将调用语句改为 sum=sum+Multiply((i+0)),因为表达式是值传递的,二是将ByRef改成ByVal。