有没有学c#的,讨论一下溢出问题,很有意思,二者对比一下.
--------------------
这个问题,我查过贴子,以前好象论论过,在VB 中,下面的代码会提示溢出的
Private Sub Command1_Click()
    Dim val1 As Integer
    Dim val2 As Double
    val1 = 32767
  '以下这句会提示溢出,因为32768已经超出integer的范围了.
  '当然,我知道,将其改成:val2 = clng(val1) + 1 就
  '不会溢出了,但是我不改,我就是为了说明问题
    val2 = val1 + 1
    MsgBox val2
End Sub以上代码中,val1的值是32767,加上1,便是32768了,正好超出integer的取值范围(-32768~+32767)
但是它并没有超出左边 val2的范围呀,val2可是声明的long型呀。
我认为这是VB设计的不合理之处。
同样的情况,在C#下是不会存在的。
因为在c#中,short型与VB中的integer型的取值范围完全相同,代码如下,做一下类比        static void Main(string[] args)
        {
            short val1 = 32767;
            int val2;
    //以下这一句是不会提示溢出的
            val2 = val1 + 1;
            Console.WriteLine(val2);
            Console.ReadKey();        }

解决方案 »

  1.   

    哈哈,我是想说:
    VB6在这方面确实是设计不太合理,或者说不太方便.当然不能说是bug,因为msdn上有专门的说明.
    我是说这种设计有点不太近人情
      

  2.   

    没有可比性,就像问50年代的汽车为什么没有 ABS 一样。
    技术发展和功能的完善是渐进的,不可能一步到位。
    VB6 最大的特色应该是即时修改了,可以不依赖任何硬盘文件进行编码、运行、调试。
      

  3.   

    用 VC 新建工程,需要指定目录,指定源代码文件,VB 不需要。
    用 VC 运行工程,必须先编译成 Exe,VB 不需要。
    用 VC 调试,发现错误必须终止运行、修改、再编译、再运行,VB 只要在中断模式下直接修改代码就可以继续运行。