Function Fun (x as Integer,byval y as Integer) as integer
x=x+y
If x<0 Then
Fun=x
Else
Fun=y
End If
private sub command1_click()
Dim a as integer,b as integer
a=-10:b=5
Text1.text=Fun(a,b)
Text1.text=Fun(a,b)
为什么最后显示text1=-5,text2=5 ,代码中的if x<0.中的x指的是x=x+y中等号左边的还是右边的x? 题中的byval是怎么体现的? 请具体解释一下代码的意思! 谢谢!!
不好意思,最后是
Text1.text=Fun(a,b)
Text2.text=Fun(a,b)
您说的第二次传递时 a的值在函数运算后为0那题中应该是byval x as Integer,而为什么是byval y as Integer啊 也就是说第二次传递时a为什么是-5 而不是-10, b还是5呢?
追答参数传递两种方式
BYREF 默认 过程在运算中会更改参数的值
BYVAL 过程在运行中不会更改到参数的值
你的过程里
Function Fun (x as Integer,byval y as Integer) as integer
Y是以Byval的形式传递 ,所以调用Fun(a,b) 时
b所以不管调用多少次都值都是不变的
而X是以默认的BYREF型式传递 在Fun(a,b) 时 a 的值会改变 且每执行一次函数会加上一次b的值
而如果你将函数改成Function Fun (byval x as Integer,byval y as Integer) as integer
那么函数的结果都会是-5
x前如果加上byval那么两次的结果就都是-5了吧?