vb问题,还有些不明白的

来源:百度知道 编辑:UC知道 时间:2024/09/18 16:55:04
private sub command1_click()
dim x as integer,y as integer,z as integer
x=6:y=12:z=20
print fun1(x,y)
end sub

private function fun1(a as integer,b as integer)as long
dim y as integer
y=a
do
if y mod b=0 then
fun1=y
exit function
else
y=y+a
end if
loop
end function

当然是12

fun1(6,12)
函数里面的y=6
y mod b 即是 6 mod 12 =6
mod是求余的。
所以IF不成立。
返回y+a即6+6=12

再循环,这个时候 是 12 mod 12
等于0
返回函数值为12
退出函数

我还有点疑问,此题按值传递,刚开始b=y=12 函数里面的y=6 ,此时b不跟着等于6吗我老师讲的是按值传递,值跟着变啊?

当执行Command1_Click事件的时候,Y再次被初始化,所以在执行以后代码的时候,Y的值是12,而不是6!

看看按值传递与按地址传递的区别

这些变量都是过程级的,只在本过程中有效,fun1中的y不是click中的y了