有下面程序代码: Private Sub Commandl_Click() Dim x As Integer,s As Integer x=1 For k=1 To 3 x=x+1:proc x:s:s+x

admin2019-01-17  27

问题 有下面程序代码:
Private Sub Commandl_Click()
    Dim x As Integer,s As Integer
    x=1
    For k=1 To 3
        x=x+1:proc x:s:s+x
    Next k
    Print s
End Sub
Private Sub proc(ByVal a As Integer)
    Static x As Integer
    x=x+1:a=a+x
End Sub
    程序运行后,单击命令按钮Commandl,输出结果是

选项 A、6
B、9
C、15
D、1 9

答案B

解析 本题中首先要区分在命令按钮的单击事件中定义的x是局部变量,仅能在过程内部起作用;在子过程proc中定义的静态变量x也是局部变量,也只能在本过程中起作用。在VB的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此参数为传值调用;若用ByRef声明,说明此参数为传址调用:没有说明传递类型,则默认为传址传递。即形参的结果会传递给实参。本题中proc过程的参数a用的是值传递,因此形参的改变不会影响到实参,所以在命令按钮的单击事件中循环累加的是2+3+4=9。
转载请注明原文地址:https://kaotiyun.com/show/AMFp777K
0

最新回复(0)