爱问知识人 爱问教育 医院库

一道VB题

首页

一道VB题

function fun (x as integer,byval y as integer)
as integer
x=x+y
if x<0 then
 fun=x
else
 fun=y
end if
end function

private sub command1_click()
 dim a as integer,b as integer
 a=-10: b=5
 text1.text=fun(a,b)
 text2.text=fun(a,b)
end sub
程序运行后,单击命令按钮,text1和text2文本框中显示的内容是____和_____
text1中我知道是-5,可为什么text2中是5呢?不也应该是-5吗?

提交回答
好评回答
  • 2008-03-01 12:45:19
    fun函数其实功能很简单,从字面上看就是x=x+y,然后如果x<0就返回x,不然则返回y
    好,text1调用fun函数的时候,a=-10、b=5
    x=x+y=-10+5=-5
    很明显,x<0成立,那就返回x,返回了-5,因为是地址传递,所以a的值确实被更改为-5了
    然后text2调用fun函数的时候,a=-5、b=5
    x=x+y=-5+5=0
    这里x<0不成立了,因为x=0,所以返回y,也就是5,所以text2的最终值是5
    

    p***

    2008-03-01 12:45:19

其他答案

    2008-02-28 10:06:45
  • 这里你要明白 ByVal 和 ByRef 之间的含义
    ByVal是值传递,形参取的是实参的值,不取内存地址,形参改变,实参不改变;
    ByRef是地址传递,形参取的就是实参的地址,形参改变,实参也改变;
    你看你的第一次调用fun 传递的a,b a=-10,b=5,运行结束后 形参是
    -5,5,然后前面的形参没有注明“ByVal”编译器默认为ByRef,所以改变形参实参也改变,a=-5,b由于是值传递所以没有改变 还是“5”
    第二次调用 传递的形参值就改变了x=-5,y=5,所以执行计算后判断就为false了。当然fun的返回值就就是 y了

    布***

    2008-02-28 10:06:45

  • 2008-02-28 08:23:21
  • text1.text=fun(a,b)之后,
    a=-5,b=5,x=x+y=0,所以x<0不成立,fun=y=b=5
    

    忙***

    2008-02-28 08:23:21

类似问题

换一换
  • VB 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 172-191
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):