求解一道VB题 5
DimxAsInteger,zAsIntegerSuba()DimyAsIntegerx=x+2:y=y+2:z=x+y+zPrintx;y;zEndSubPrivate...
Dim x As Integer, z As Integer
Sub a()
Dim y As Integer
x = x + 2: y = y+2: z = x + y + z
Printx; y; z
End Sub
Private Sub Form_Click()
Dim y As Integer
x = 2: y = 6: z = x + y + z
Call a
Print x; y; z
End Sub
为什么单击窗体后 显示
4 2 14 4 6 14 展开
Sub a()
Dim y As Integer
x = x + 2: y = y+2: z = x + y + z
Printx; y; z
End Sub
Private Sub Form_Click()
Dim y As Integer
x = 2: y = 6: z = x + y + z
Call a
Print x; y; z
End Sub
为什么单击窗体后 显示
4 2 14 4 6 14 展开
3个回答
展开全部
因为 你设定的 x 和 z 是全局变量 ,而 y 为局部变量。也就是说 x 和 z变量的作用域是整个这个程序,而y的值在离开定义域后将不能跟随,由此得知 在调用a子程序之前 x=2 y= 6 z= 8
而在调用子程序的时候 x=2+2=4, y= 0+2 =2 , z= 4+2+8 =14
而离开子程序 再回到主程序的时候 y值又恢复到 调用子程序之前 也就是6
所以再打印的时候 就是 x=4,y=6,z=14
明白了吗?
而在调用子程序的时候 x=2+2=4, y= 0+2 =2 , z= 4+2+8 =14
而离开子程序 再回到主程序的时候 y值又恢复到 调用子程序之前 也就是6
所以再打印的时候 就是 x=4,y=6,z=14
明白了吗?
更多追问追答
追问
我就不明白为什么call a 是写在子程序后面的呀 后面直接又Print x; y; z了 y 并没有变6啊
我就不明白为什么call a 是写在子程序后面的呀 后面直接又Print x; y; z了 y 并没有变6啊
展开全部
你按照他给的程序自己算就好了
首先,单击窗体时,定义了x = 2: y = 6: z = x + y + z,其中z默认初始值是0,所以此时z = 2+6 = 8
接着call a函数,然后定义了y, 于是此时的y 又变成了0,,然后此时的x = x + 2 = 2 + 2 = 4; y = y + 2 = 0 + 2 = 2 ,z = x + y + z = 4 + 2 + 8 = 14 ,然后执行打印命令,打印出x,y,z的值分别是4,2,14。然后再回到Private Sub Form_Click()时间里面来,接着就要执行打印工作,但是这时候注意,此时的y不再是a()函数里面的y了,回到了Private Sub Form_Click()中的y就是原来的y = 6,所以是4,6,14.那么为什么会不一样呢?请注意,定义x,z的时候,是写在了所有函数的外面,就是一个通用的x,z,但是定义在函数内部的y是不一样的,只能在当前函数内部使用,除了这个函数之后就不复存在,这就是为什么要在Sub a()里面也要定义一个y,并不是什么陷阱,而是因为不在Sub a()里面也定义一个y,整个程序就会出错,无法运行,编译软件会提示有未知的变量“y”。可以简单地吧2个y 看成是y1和y2,虽然最后打印出来都是y,但是完全是两个变量。
首先,单击窗体时,定义了x = 2: y = 6: z = x + y + z,其中z默认初始值是0,所以此时z = 2+6 = 8
接着call a函数,然后定义了y, 于是此时的y 又变成了0,,然后此时的x = x + 2 = 2 + 2 = 4; y = y + 2 = 0 + 2 = 2 ,z = x + y + z = 4 + 2 + 8 = 14 ,然后执行打印命令,打印出x,y,z的值分别是4,2,14。然后再回到Private Sub Form_Click()时间里面来,接着就要执行打印工作,但是这时候注意,此时的y不再是a()函数里面的y了,回到了Private Sub Form_Click()中的y就是原来的y = 6,所以是4,6,14.那么为什么会不一样呢?请注意,定义x,z的时候,是写在了所有函数的外面,就是一个通用的x,z,但是定义在函数内部的y是不一样的,只能在当前函数内部使用,除了这个函数之后就不复存在,这就是为什么要在Sub a()里面也要定义一个y,并不是什么陷阱,而是因为不在Sub a()里面也定义一个y,整个程序就会出错,无法运行,编译软件会提示有未知的变量“y”。可以简单地吧2个y 看成是y1和y2,虽然最后打印出来都是y,但是完全是两个变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想问题为什么 第二个不同么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询