卡在一个小点上,希望高手可以指点一下

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:30:40
7.阅读下列程序:
Private Sub Command1_Click()
Dim i As Integer, t As Integer
t = 1
For i = 1 To 3
Print Hck(t);
Next i
End Sub
Function Hck(j As Integer)
a = 0
Static b
a = a ^ 2 + 1
b = b + 2
Hck = a * b * j
End Function
运行程序后,单击命令按钮,输出结果是。
A)2 3 4 B)2 4 6
C)5 6 7 D)3 5 6
答案是B,我想问一下,b是过程变量,a是不是窗体变量啊,窗体变量就应该在这个程序中都起作用啊,为什么它的值是不变的呢?

b是静态变量,作用域为整个工程,所以每次执行Hck函数的时候b的值都在上一次的值上增加(即三次循环b分别为2,4,6),而a不管前面定义没有定义为全局变量,每次调用d的时候都(a = 0 )清零,调用函数的时候传过来的参数t为1,所以答案为b