求VB高手!这道题为什么是这样的

[复制链接]
查看11 | 回复4 | 2011-3-8 21:47:22 | 显示全部楼层 |阅读模式
不知我这样分析对不c = a + b + c 内部执行a=a+b 即 a=32763+5=32768c=a+c 即c=32768+5=32773因为a定义为integer,最大数不超32763,所以溢出而c=c+a+b意为c=c+a 即c=5+32763=32768c=c+b 即c=32768+5=32773因为c定义为long长整数型,所以不溢出你可以删掉Dim a As Integer, b As Integer, c As Long你就可以发现两种格式都行,无错误,所以应该是这样...
回复

使用道具 举报

千问 | 2011-3-8 21:47:22 | 显示全部楼层
因为VB的逻辑运算和堆栈的问题。c = a + b + c过程是a = a + b (这里因为a是Integer类型,而32763+5已经超出了Integer的范围导致溢出)c = a + c...
回复

使用道具 举报

千问 | 2011-3-8 21:47:22 | 显示全部楼层
错的原因当 计算 A+B 的时候,C的类型被自动转换为 Integer,然后再 + C,类型无法从 Integer 转换为 Long,所以出错。...
回复

使用道具 举报

千问 | 2011-3-8 21:47:22 | 显示全部楼层
应该是跟a,b,c的类型有关,你这里先运算a+b结果是-5,然后再加上c结果就成了0了,所以你运行c=a+b+c结果c为0,如果写成c=c+a+b,先运算c+a,这里面进行了类型转换,加的结果是32768,然后再加上b,运行结果为32773。呵呵,我的理解就是这样...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行