小编eli*_*lin的帖子

VB6在计算负数Mod为2的幂的数字时的奇怪行为

我正在调试用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

6
推荐指数
1
解决办法
76
查看次数

标签 统计

vb6 ×1