在窗体上画一个名称为Command1的命令按钮,然后编写如下程序代码: Dim x As Integer Private Sub MySub() Static x As Integer Dim y As Integer x = x + 10

admin2020-07-22  22

问题 在窗体上画一个名称为Command1的命令按钮,然后编写如下程序代码:
Dim x As Integer
Private Sub MySub()
  Static x As Integer
  Dim y As Integer
  x = x + 10
  y = y + 10
  Print "x="; x; "y="; y;
End Sub
Private Sub Form_Load()
  x = 50
End Sub
Private Sub Command1_Click()
  Call MySub
  MySub
  Print "x="; x
End Sub
程序运行时,单击Command1,则在窗体上输出的结果是

选项 A、x=10  y=10  x=60  y=10  x=60
B、x=60  y=10  x=70  y=10  x=70
C、x=60  y=10  x=70  y=10  x=50
D、x=10  y=10  x=20  y=10  x=50

答案D

解析 dim定义的变量称为"自动变量",当引用Dim定义变量时,变量值会被重新设置(数值变量重新设置为0,字符串变量被设置为空)。也就是说,下次再使用此变量,其值为初始值;而static定义变量,每次引用该静态变量后,其值会继续保留,作为下一次引用时该变量的初始值。程序先定义了模块变量x为整型,位置在事件之外;当程序开始运行时,首先加载窗体,得x=50,然后监听命令按钮事件,当用户点击了命令按钮,程序Call MySub过程,会用Call语句调用Sub过程MySub。在MySub过程中,定义了局部变量y,和静态变量x,位于过程内部,x=x+10=10,y=y+10=10,接着打印x=10 y=10。注意,本过程执行完后,局部变量y的值会被重新设置为0,而Static定义的变量x,其值为10;程序继续执行MySub,第二次调用MySub过程,x=x+10=10+10=20,y=y+10=0+10=10,接着打印x=20 y=10;程序最后打印x的值,用static所定义的变量x,在过程内,其作用域范围被限定,其不会改变模块变量x的值。故打印出来的结果是x=50,也就是加载窗体后,对变量x进行初始化后的值。故本题正确答案为D。
转载请注明原文地址:https://kaotiyun.com/show/7NHp777K
0

最新回复(0)