| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1782 人关注过本帖
标题:敬请讲解关于溢出的问题
只看楼主 加入收藏
happytwosky
Rank: 2
等 级:论坛游民
帖 子:3
专家分:20
注 册:2016-4-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
敬请讲解关于溢出的问题
Private Sub Command1_Click()
Dim x As Integer, y As Integer, color As Integer
For x = 100 To 4000
  y = Fix(x / 3)
  color = Fix(255 * (x + 2500) / 4000)
  Pic.Circle (Pic.Width - x, y), (x + 100) / 7, RGB(255, color, 130)
  Next x
End Sub
在运行时一直提示color这里溢出,不知什么原因
搜索更多相关主题的帖子: color 
2016-04-15 10:56
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:941
专家分:5244
注 册:2015-8-10
收藏
得分:2 
怀疑是你的数太大了,超过了Integer的上限(这个你去百度一下,具体数值我记不住了)
换成长整型,Long 试试
2016-04-15 11:20
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:18 

Dim  color As Integer
'保存 16 位(2 字节)有符号整数,值的范围为 -32,768 到 32,767

  color = Fix(255 * (x + 2500) / 4000)

这里,表达式中,所以的常数也都未超过 integer 的范围,根据默认范围,所有的数据全部被表达为 integer。
根据运算法则,数据类型最高为 integer ,整个运算都在 integer 的范围内运算。
我们再来看运算结果。
X是 100 -4000,我们先用最小值,100 来 代入表达。变成了
255*(100+2500)/4000
表达式运算是从左到右计算,与编译不同,编译是从右到左。
=255*2600/4000
=663000/4000                    '这步,663000,超范围了,所以这里报溢出
下一步就不会计算了,直接报前面这一行的错误。



授人于鱼,不如授人于渔
早已停用QQ了
2016-04-15 11:22
happytwosky
Rank: 2
等 级:论坛游民
帖 子:3
专家分:20
注 册:2016-4-15
收藏
得分:0 
回复 3楼 风吹过b

谢谢风大,俺还以为是只要结果范围在integer的范围之内,就可以了!
2016-04-15 14:23
快速回复:敬请讲解关于溢出的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.099324 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved