读书人

有没有学c#的,讨论一下溢出有关问题,很

发布时间: 2012-01-10 21:26:51 作者: rapoo

有没有学c#的,讨论一下溢出问题,很有意思,二者对比一下.
有没有学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();

}



[解决办法]
呵呵,问题都被你说明白了
[解决办法]
没办法
[解决办法]
没有可比性,就像问50年代的汽车为什么没有 ABS 一样。
技术发展和功能的完善是渐进的,不可能一步到位。
VB6 最大的特色应该是即时修改了,可以不依赖任何硬盘文件进行编码、运行、调试。
[解决办法]
一个程序设计软件能够使用这么多年才能找出聊聊几个可以完全避免的错误,就已经值得我们这些程序员学习了。
相比之下,我们的程序不出错运行能够持续几天或几个月呢?

读书人网 >VB

热点推荐