作业帮 > 综合 > 作业

vb题 Private Sub Command 1 _Click()Dim x As Integerx=Val(Inpu

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/29 01:50:40
vb题
Private Sub Command 1 _Click()
Dim x As Integer
x=Val(InputBOX("输入数据"))
Text1=Str(fun(x)+fun(x)+fun(x))
End Sub
Private Function fun(ByRef n As Integer)
If n Mod 3=0 Then
n=n+n
Else
n=n*n
End If
fun=n
End Function
当单击命令按钮,在输入对话框中输入2时,文本框中显示的是__
答案为什么不是12?
和你的fun()函数的传值方式有关
ByRef传的是X的地址,X的值会因为每次调用fun()而改变
Private Function fun(ByRef n As Integer)
Text1=Str(fun(x)+fun(x)+fun(x))
Text1=Str(4+16+256)
结果为276
如果改为
Private Function fun(ByVal n As Integer)
ByVal传值方式,X的值就不会因为调用fun()而改变
结果就会是你预期的12
再问: ByRef传的是X的地址,X的值会因为每次调用fun()而改变 是调用了三次fun()么?是因为有三个fun()所以调用三次?
再答: 是的。每调用一次X的值都改变了。因为fun() 中有语句改变了X的值