我正在调试用VB6开发的旧代码,发现有些奇怪的东西。可以使用以下简单代码进行演示:
Private Sub Command1_Click()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = 0
Text1.Text = a - 1
Text2.Text = CStr((a - 1) Mod 4)
b = 0
b = b - 1
Text3.Text = b
Text4.Text = CStr(b Mod 4)
c = 0 - 1
Text5.Text = c
Text6.Text = CStr(c Mod 4)
End Sub
Run Code Online (Sandbox Code Playgroud)
表单如下所示:
您会认为单击按钮后,Text2,Text4和Text6应该显示相同的内容,即-1。我按F5键在IDE中运行它时就是这种情况。
这是我在IDE中运行它时的样子:
当我从IDE中制作一个exe并运行该exe本身时,发生了一件奇怪的事情。Text1和Text6显示-1,而Text4显示3。
这是我在IDE外部运行exe时的样子:
仅当第二个操作数为2的幂时,才会发生这种情况。当我将4更改为5时,所有文本框都显示为-1。
我在2台Windows 10机器上对此进行了测试,并得到了相同的结果。
我知道VB6很旧,现在仍然没有多少人可以测试它。如果有人可以帮助我理解这一点,我将深表感谢。
谢谢。
vb6 ×1