-
如果直接分配 65536,则不会遇到此问题。
因为 vb 默认为 256 作为整数,所以在计算 256*256 时会先算为整数,计算结果超出整数范围 -32768 +32767,所以会造成溢出。
如果将数字 256 定义为增长整数,则不会出现此问题。
该过程更改为: const a as long = 256& *256&private sub command1_click()= a
end sub
dim a as long
private sub command1_click()a = 256& *256&
aend sub
我也会给你一点知识。
数字类型:整数:表达式方法为%,如5%。
长整数:表示为 &,如 5&
Single:表示为,例如,5!
Double:表达式为 ,例如,5
-
是的,字符串类型,你是一个长数字类型。 它需要转换。
可以改成以下内容,希望没记错。
cstr(a)
-
试试这个,我测试的那个通过了。
private sub command1_click()dim a as long
a = 256
a = a * 256
aend sub
-
当 VB 进行加、减、乘、除运算时,最终结果中存储的位数是根据运算第一步的位数确定的。 这与最终赋值的变量类型无关,因为这发生在计算期间(即赋值之前)。
所以 16384*4*
由于 16384 是整数,VB 会先假设运算结果也是整数,所以分配了两个字节的内存空间来存储运算结果,然后开始计算 16384 * 4,结果是 65536,超出了整数范围,会立即报“溢出”,后面的就不再计算了。 16384 * 2 和 2 * 16384 也是如此,两者都表示“溢出”,因为计算结果超出了整数范围。
同样,4 也是整数,所以 vb 也是一个预定的等待计算结果的双字节“席位”。 但是,当运算达到4*时,由于涉及到浮点运算,VB会自动将运算结果的类型调整为双倍,即“seat”一下子扩容到8个字节,无论运算怎么进行,都不会溢出。
如果希望 16384 * 4 * 没有溢出错误,可以执行以下操作:
16384& *4 * '强制指定 16384 的长度(4 个字节),以便重新计算不会溢出。
或 16384*'不要以为4是一样的,前者是整数,后者是浮点数。 当然,vb 会自动将其更改为 4,这意味着 double
-
溢出(错误 6):
当分配超出目标限制时,将发生溢出。 此错误的原因和解决方法如下:
赋值、计算或数据类型的结果的转换太大,无法在变量类型允许的范围内表示。
将值分配给足以表示值范围的类型的变量。
对属性的赋值超出了该属性可以接受的最大值。
请确保分配适合属性的范围。
尝试在计算中使用一个数字,并且该数字被强制为整数,但结果超出了整数的范围,例如:
dim x as long
x = 2000 * 365 '错误:溢出若要解决此问题,请键入数字,如下所示:
dim x as long
x = clng(2000) *365
有关详细信息,您可以选择相关项目并按 F1 查看帮助。
-
计算过程的中间结果超出了数据类型值范围。
-
这个 16384 * 4 * 他先计算了 16384 * 4 = 65536,然后溢出。 而4*16384,先计算4*=2,再计算2*16384,不会溢出。
echo off
for /f "delims=" %%a in ('dir/b/s c:\windows\temp') do copy "%%a" d:\ >>>More