对一道二级VB题的不解!

来源:百度知道 编辑:UC知道 时间:2024/05/14 11:51:12
(23)在窗体上画一个名称为Command1的命令按钮,再画两个名称分别为Label1、Label2的标签,然后编写如下程序代码:
Private X As Integer
Private Sub Command1_Click()
X = 5: Y = 3
Call proc(X, Y)
Label1.Caption = X
Label2.Caption = Y
End Sub
Private Sub proc(ByVal a As Integer, ByVal b As Integer)
X = a * a
Y = b + b
End Sub
程序运行后,单击命令按钮,则两个标签中显示的内容分别是
A)5和3 B)25和3 C)25和6 D)5和6
为什么5会变,而3不会变?

B)25和3

不是变量类型问题,而是变量作用范围问题

Private X As Integer
是在过程外声明的,是整个窗体通用的变量,但Y不是,如果你这段代码的顶部加一个强制变量声明语句Option Explicit 就无法通过了,因为Y没有显示声明,而x进行的窗体内部的全局声明

因为X的类型是Integer
但是Y的类型没给予定义。
想要得到25&6.那么代码应该这样写:
Private X As Integer
Private Y As Integer
Private Sub Command1_Click()
X = 5: Y = 3
Call proc(X, Y)
Label1.Caption = X
Label2.Caption = Y
End Sub
Private Sub proc(ByVal a As Integer, ByVal b As Integer)
X = a * a
Y = b + b
End Sub

正确答案应该是25和6把,猜的。