CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

VB简单问题

楼主TrueZq(xx)2002-12-09 15:15:07 在 VB / 基础类 提问

Dim   a   As   Long  
  a   =   &H8000  
  此时VB下显示a的值为-32768,为什么?  
   
  照理  
  8000(16进制)=8*(16的3次方)=8*(2的12次方)=8*4096=32768  
  难道VB把a看成整型了,认为a=32768溢出,所以为负数  
   
  /////////////  
  注:在C语言里  
  long   a;  
  a=0x8000  
  a此时等于32768 问题点数:20、回复次数:4Top

1 楼holydiablo(香菜鱼头)回复于 2002-12-09 15:30:29 得分 10

应该是&H8000的问题  
  它的值就是-32768Top

2 楼Tenner(BE.Tenner)回复于 2002-12-09 15:31:21 得分 10

在VB中四位的十六进制数如果大于&H7FFF就被认为是负数  
  解决方法为加一句判断:  
  a   =   &H8000  
  if   a<0   then   a=65536+a  
  Top

3 楼holydiablo(香菜鱼头)回复于 2002-12-09 15:43:21 得分 0

应该说是4位16进制的存放是16位的,所以超过&H7FFF就负了,而再多的话就又对了,比如a=&H10000,就是65536,这时候的存放是32位的,而这个转换又是系统默认的,无法更改,我是想不出来了Top

4 楼TrueZq(xx)回复于 2002-12-09 19:53:20 得分 0

上面几位好像没有说对噢  
  我随后看了MSDN,改为a   =   &H8000&   就对了。^_^  
   
  VB也真是的,为什么不把a   =   &H8000   当作错误语句。Top

相关问题

  • 简单VB问题!
  • vb简单问题
  • 很简单的vb问题:
  • 简单的VB问题
  • 简单的VB问题!
  • VB控件,简简单单
  • vb脚本简单问题
  • vb中textbox的简单问题
  • 注意注意,简单问题VB
  • VB的一个简单问题

关键词

  • vb
  • 负数
  • 问题
  • 认为

得分解答快速导航

  • 帖主:TrueZq
  • holydiablo
  • Tenner

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo