一道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吗?
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
这里你要明白 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了
text1.text=fun(a,b)之后, a=-5,b=5,x=x+y=0,所以x<0不成立,fun=y=b=5
答:就是VB程序啊,很多语言可以达到这个效果,不过您已经说了:这是我的第一个VB程序,那就用Visual Basic啊。用Visual studio 创建VB项目,...详情>>
答:线性链表分好几种,分为单链,双链等,它们的存储顺序也不一样. 线性表是顺序存储的,占顺序的存储空间详情>>
问:电脑安装了VB6.0,为什么打开方式里面没有VB程序选项,进安装好的VB里去关联...
答:打开方式最下面还有一个《选择程序》,点开后查VB的安装目录的EXE,找到后直接打开,下次就会在打开方式里查到了详情>>