VB题,求大神给个解析,尤其是static那一部分

 我来答
百度网友cc69e68
2016-02-22 · TA获得超过216个赞
知道小有建树答主
回答量:393
采纳率:84%
帮助的人:183万
展开全部
'第一行是:X=4 第二行是:26 第三行是:15 15

Private Sub Command1_Click()
    Dim X As Integer, Y As Integer, S As Integer
    X = 12: Y = 18
    If X > Y Then
        S = Fun(X, Y, 1)
    Else
        S = Fun(Y, X, 1)
    End If    
    Print S    '打印S值为:26
    Print X, Y '打印X,Y值为:15    15
    
End Sub

'由于函数参数没有使用byval,所以是传地址方式传递参数,会使用参数内容变更会反过来影响原参数值.
Private Function Fun(A As Integer, B As Integer, K As Integer)
    Static X As Integer    '静态变量, 会保留上次的值
    X = X + K
    If A <= B Then
        Fun = A + B - X  '第四次执行时A=15,B=15,X=4,所以Fun=26
        Print "X="; X    '打印内容:X=4
        '由于采用传址方式,所以Y=A=15,X=B=15
    Else
        A = A - X
        B = B + X
        Fun = Fun(A, B, X)   
        '第一次A=18,B=12,X=1,第二次A=17,B=13,X=2,第三次A=15,B=15,X=4.        
    End If
    X = 0
End Function
庆年工坊
2016-02-22 · 知道合伙人互联网行家
庆年工坊
知道合伙人互联网行家
采纳数:4233 获赞数:8928

向TA提问 私信TA
展开全部
第1次调用:s=fun(18,12,1)
x=1
a=17
b=13
第2次调用:fun=fun(17,13,1)
x=2
a=15
b=15
第3次调用:fun=fun(15,15,2)
x=4
fun=26
输出:x=4
返回
输出:26
输出:15 15(因为参数是传递地址格式,所以x,y随a,b改变)
追问
还是特别感谢你,!??
追答
.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式