解决方案 »

  1.   

    在vb中integer的范围不就是正负32767么, 超过了范围就溢出, 难道这不是"应该"的事么?至于C,它不是还有无符号类型么. 至于你举的例子是否能通过每一个版本的C编译器还是个问题呢.
      

  2.   

    两个 Integer 的积,你最好是用 Long 型。除非你限制两个乘数的大小。
      

  3.   


    Private Sub Command1_Click()
    Dim a As Integer, b As Integer, c As Integer
    On Error GoTo errp
        a = 200: b = 200
        c = a * b
        Debug.Print c
        Exit Sub
    errp:
        'Debug.Print Err.Number, Err.Description
        If Err.Number = 6 Then c = -CInt(65536 - CLng(a) * CLng(b))
        Resume Next
        'c = 40000 > 32767(15位)
        '这样会提示溢出
        '而在C语言中,c的结果则是对40000对应的最高位还要高的位取反(即结果是-25536)
    End Sub
      

  4.   

    vb也有无符号啊!(UInteger)
    你是用的vB6.0吧,如果是VB.Net的话它是-2147483647到+2147483647.
      

  5.   

    vb也有无符号啊!(UInteger)
    你是用的vB6.0吧,如果是VB.Net的话它是-2147483647到+2147483647.这个帖子讨论的不就是VB6么