Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有大整数的VB6溢出错误_Vb6_Integer_Overflow - Fatal编程技术网

带有大整数的VB6溢出错误

带有大整数的VB6溢出错误,vb6,integer,overflow,Vb6,Integer,Overflow,我正在尝试设置一个整数值,如下所示: Dim intID as integer intID = x * 10000 当x小于等于3时,此功能正常工作。但是当x为4时,这会产生错误: 运行时错误6 溢出 我不明白这是为什么。我可以直接将intID设置为40000,没有任何问题,因此它显然能够存储大量数据 您*无法将vb6整数设置为40000,因为它们是有符号的16位数字,因此+32767是最大值 Long是32位类型 但是,作为警告,如果您要: Dim lngID As Long lngID =

我正在尝试设置一个整数值,如下所示:

Dim intID as integer
intID = x * 10000
x
小于等于3时,此功能正常工作。但是当
x
为4时,这会产生错误:

运行时错误6 溢出

我不明白这是为什么。我可以直接将
intID
设置为40000,没有任何问题,因此它显然能够存储大量数据


您*无法将vb6整数设置为40000,因为它们是有符号的16位数字,因此+32767是最大值

Long
是32位类型

但是,作为警告,如果您要:

Dim lngID As Long
lngID = 4 * 10000
您仍然会得到一个溢出,因为文字数字默认为整数,要更正这个溢出,只需使用
&
键入一个,或使用
CLng()
将一个强制转换为长:

更新


在VB6中,整数类型是一个从-32768到32767的整数


最好在此处使用
Long
类型。

在VB中,整数变量范围为-32768到32767。如果程序中有任何变量值超过此范围,则必须声明数据类型Long而不是Integer

Dim intID as integer
intID = x * 10000

Dim lngID AS Long

lngID = x * CLng(10000)
' if 10000
' whatever you want to be

在vb6中,
Dim intID as integer:intID=40000
将出现100%的时间错误,因为
3*10000
适合整数(其<32767),
4*10000
不适合not@Urbycoz您的大多数问题都是关于VB.NET的。为了避免任何疑问,您能否确认您确实在VB6中看到了这种行为?是的,它肯定是VB6。我会发布一个截图。@Alex-你说得对。它现在的行为就像你对我说的那样。不知道发生了什么变化。谢谢你的帮助!请解释你的答案。您只是发布了代码。在VB中,整数变量范围为-32768到32767。如果程序中的任何变量值超过此范围,您必须声明数据类型为Long而不是Integer。Thank.Hi@Always初学者,欢迎来到堆栈溢出。你是对的,解决这个问题的正确方法是使用long而不是int。谢谢你提供这个答案。
Dim intID as integer
intID = x * 10000

Dim lngID AS Long

lngID = x * CLng(10000)
' if 10000
' whatever you want to be