运行下面的程序,单击窗体时,窗体上第一行显示的内容是_______,第二行显示的内容是_______,
Private Sub P1(x As Integer,ByVal y As Integer)
Static z As Integer
x=x+z
y=x-z
z=10-y
End Sub Private Sub Form_Click()
Dim a As Integer,b As Integer,z As Integer
a=1:b=3:z=2
Call P1(a,b)
Print a,b,z
Call P1(b,a)
Print a,b,z
End Sub
答案是"1 3 2","1 12 2",请问大师们程序在调用时是如何调用的?怎么得出答案的?
Private Sub P1(x As Integer,ByVal y As Integer)
Static z As Integer
x=x+z
y=x-z
z=10-y
End Sub Private Sub Form_Click()
Dim a As Integer,b As Integer,z As Integer
a=1:b=3:z=2
Call P1(a,b)
Print a,b,z
Call P1(b,a)
Print a,b,z
End Sub
答案是"1 3 2","1 12 2",请问大师们程序在调用时是如何调用的?怎么得出答案的?
所以第一个Call P1(a,b)后a等于1。(z= 0 ,x-z=1)
第二个Call P1(b,a),
此时b=3不变,a = 1(已经变过了,只是前后值相等),
Form_Click里的z= 2,但P1里的z=9。
x=x+z=3+9 = 12(b的值也变成12了) b=12
y=x-z =12-9 = 3 (因为ByVal 的存在不改变a的值)a =1
z=10-y = 7(也不会改变Form_Click里的z的值)z=2
Z=10-Y=10-(X-Z)=10-(X+Z-Z)=10-X=10-1=9