社区
VB基础类
帖子详情
为什么会造成溢出
justgod
2005-03-12 10:57:43
Public count1 As Long
Dim buf_redata() As Byte
count1 = buf_redata(1) * 256 + buf_redata(2)
为什么会造成溢出,
然而把程序改为下面,溢出好像就没了。
count1 = buf_redata(1)
count1 = count1 * 256
count1 = count1 + buf_redata(2)
...全文
60
7
打赏
收藏
为什么会造成溢出
Public count1 As Long Dim buf_redata() As Byte count1 = buf_redata(1) * 256 + buf_redata(2) 为什么会造成溢出, 然而把程序改为下面,溢出好像就没了。 count1 = buf_redata(1) count1 = count1 * 256 count1 = count1 + buf_redata(2)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
viena
2005-03-12
打赏
举报
回复
以上From MSDN,结果是这样的没错,但关于精确度的说法是不对的
浮点数表数范围大,但精确度不高的
实际上,Single没有Long精确度高,Double没有Currency精确度高
justgod
2005-03-12
打赏
举报
回复
谢谢!!viena(维也纳nn-实心木头人)
justgod
2005-03-12
打赏
举报
回复
哦,谢谢!明白了,其实我也想到这点,我才把程序写成那种方式;
count1 = buf_redata(1)
count1 = count1 * 256
count1 = count1 + buf_redata(2)
但是这样写不是好繁琐吗?
在C里面可以写成以下这样解决问题,
count1 = (ulong)(buf_redata[1] * 256) + buf_redata[2];
VB应该怎么写成一个语句解决问题呢?
viena
2005-03-12
打赏
举报
回复
乘法与加法运算结果的数据类型通常与最精确的表达式的数据类型相同。精确度由最低到最高的顺序是
Byte、 Integer、Long、Single、Currency、Double 和 Decimal
viena
2005-03-12
打赏
举报
回复
改为
count1 = buf_redata(1) * 256& + buf_redata(2)
就可以了,&是Long型类型声明符,此时256为Long型,表达式也为Long型,就不会溢出了
viena
2005-03-12
打赏
举报
回复
哦,错了,汗!
有256,表达式应该是Integer类型
buf_redata(1) * 256 + buf_redata(2)运算的结果超出了Integer的范围
viena
2005-03-12
打赏
举报
回复
buf_redata(1) * 256 + buf_redata(2)
这个表达式是Byte型,在给Long型变量count1赋值以前,存放在一个Byte型临时变量里,超出了Byte的范围,当然会溢出
什么是缓冲区
溢出
?有什么危害?原因是什么?
缓冲区
溢出
是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,... 原因:
造成
缓冲区
溢出
的主要原因是程序中没有仔细检查用户输入。 所谓缓冲区可以更抽象地理解为一段可读写的内存区域,缓冲区攻击的...
导致堆栈
溢出
的原因什么?
函数递归调用时,系统要在栈中不断保存函数调用时的现场和产生的变量,如果递归调用太深,就
会
造成
栈
溢出
,这时递归无法返回。再有,当函数调用层次过深时也可能导致栈无法容纳这些调用的返回地址而
造成
栈
溢出
。 2.&...
栈
溢出
是什么?
如果向缓冲区中写入超过其本身长度的数据,以致于缓冲区无法容纳,就
会
造成
缓冲区以外的存储单元被改写,这种现象就称为缓冲区
溢出
。缓冲区长度一般与用户自己定义的缓冲变量的类型有关。 栈
溢出
是由于C语言系列...
请小心栈
溢出
写这篇文章本意是帮助萌新们对栈
溢出
能够有一个较为直观的理解,可能废话有点多,让各位大佬...为什么栈
会
溢出
呢? 我们先来看看百度百科的描述: 栈
溢出
就是缓冲区
溢出
的一种。由于缓冲区
溢出
而使得有用的存...
溢出
问题:数组
溢出
,整数
溢出
,缓冲区
溢出
,栈
溢出
,指针
溢出
一般在笔试题里,这类问题
会
以程序改错或者安全问题出现。现在分别来分析一下常见的数组
溢出
,整数
溢出
,缓冲区
溢出
,栈
溢出
和指针
溢出
等。 (1)数组
溢出
在C语言中,数组的元素下标是从0开始计算的,所以,对于n...
VB基础类
7,763
社区成员
197,609
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章