VB小问题 大家帮下忙

来源:百度知道 编辑:UC知道 时间:2024/05/25 07:21:51
有段代码 大家看看:
Dim y As Integer
Private Sub command1_click()
Dim x As Integer
x = 2
Text1.Text = fun2(funl(x), y)
Text2.Text = funl(x)
End Sub
Private Function funl(x As Integer) As Integer
x = x + y: y = x + y
funl = x + y
End Function
Private Function fun2(x As Integer, y As Integer) As Integer
fun2 = 2 * x + y
End Function
当单击一次和单击2次命令按扭后,文本框TEXT1和TEXT2内的值分别是?
我在电脑上运行是10 10 58 58
这段代码 小弟不是很清楚 想大哥大姐们帮我仔细说说 那个Y有什么作用啊 为什么第二次点击会是58呀 在这里先谢谢大家拉

这个关系到变量的作用域和生命周期

先解释这两个概念
作用域:变量可见的范围,也就是说,在这段范围里面,这个变量才能用,超出了这段范围,这个变量是不存在的
生命周期:变量的生存时间,也就是变量能"活"多久

再来看x和y这两个变量,x定义在Private Sub command1_click()这个函数里面,属于局部变量,y没有定义在任何函数里面,这个叫全局变量

再解释一下局部变量和全局变量
局部变量就是在函数内部定义的变量,作用域是这个函数,生命周期为这个函数运行的时间,也就是说,这个函数开始运行,这个变量有用,等函数运行完了,变量也就"死"了
全局变量,在函数外部定义的变量,作用域是这个文件,生命周期是和整个程序一样.也就是说,只要你这个程序开始运行,这个变量就存在了,直到关闭程序,这个变量才"死掉"

最后,如果你能理解上面的内容,就能理解这个题目的结果了
x是局部变量,每次点击按钮的时候,x都活过来一次,初始值是2,然后运算结束,显示了两个值后,x就死了,
等到下次按按钮的时候,x又从2开始了
再来看y,他是和整个程序同时存在的,可以说是"不死"的,所以y的值一直被保留着.第一次点击按钮,y从0变成2,再变成6,等第二次点击按钮,y从6开始算,变14,再变36,所以算出来两个58

y是全局变量,对全局有效,每调用一次函数fun1,y的值就改变一次。当你单击一次后,y的值6被保存,第二次单击,保存后的y的值6继续参与运算。运算过程如下:
第二次:x=x+y=2+6=8; y=x+y=8+6=14;fun1=x+y=8+14=22;fun2=2*x+y=2*fun1+y=2*22+14=58;