【发布时间】:2013-07-03 16:56:35
【问题描述】:
我已经使用 VB6 很多年了,但我遇到了一些相当奇怪的事情,我自己无法确认这个结果。所以我想知道以下代码的输出是否会是
7
7
或
7
6
代码如下:
Option Explicit
Private Sub cmdOk_Click()
Dim V As Integer
V = 6
Call AddV(V)
Print V
End Sub
Sub AddV(ByRef P As Integer)
P = P + 1
Print P
End Sub
在我的系统 (Windows XP + VB6) 上,这可以正常工作。所以我得到了第一个输出。但是,我在 Windows 7 + VB6 上看到过相同的程序,但输出不一样。
有人能解释一下为什么会这样吗?然而,同样的事情在 VB 2008 + Windows 7 上运行得很好。我认为按值调用和按引用调用是任何语言/操作系统中的标准参数传递技术。
谢谢!
编辑:cmdOK 是一个命令按钮。
【问题讨论】:
-
我在 VB6+XP 和 VB6+Win7(相同的 exe)上得到相同的结果 (7 7)。根据 Hans 的描述,如果我在删除 Call 关键字的情况下运行它,那么我会在两个操作系统中看到 (7 6) 的预期结果。
标签: windows vb6 parameter-passing byref