vb.net 算术运算导致溢出?

VB6.0运算符有算术运算符、赋值运算符、比较运算符、串联运算符、逻辑/按位运算符、其它运算符共6类。以下分别介绍它们的用法。

用来求一个数字的某次方,次方数为 exponent 值。

^ 运算符的语法具有以下几个部分:

只有当 exponent 为整数值时,number 才可以为负数。在表达式中执行多个指数运算时,^ 运算符的计算顺序从左到右。

* 运算符的语法具有以下几个部分:

如果有一个或两个表达式是 Null 表达式,则 result 为 Null。如果一个表达式是 Empty,则作为 0 处理。

注意:乘法用到的精确度等级与加法和减法用到的精确度等级不一样。

用来进行两个数的除法运算并返回一个浮点数。

/ 运算符的语法具有以下几个部分:

A、两个表达式都是 Byte、Integer 或Single表达式时,则 result 为一个 Single,除非超出正确范围;如果发生这种情况,则产生错误。

D、有一个或是两个表达式是 Null 表达式,则 result 为 Null。如果一个表达式是 Empty 则作为 0 处理。

用来对两个数作除法并返回一个整数。

\ 运算符的语法具有以下几个部分:

在进行除法运算之前,数值表达式通过舍去小数部分转换成 Byte、Integer 或 Long表达式。

用来对两个数作除法并且只返回余数。

Mod 的语法具有以下几个部分:

在进行 Mod 运算或求余数运算时,该运算符将 number1 用 number2 除(将浮点数字四舍五入成整数),并把余数作为 result 的值返回。

例如,在下列表达式中,A (result) 等于 5。

+ 运算符的语法具有以下几个部分:

在使用 + 运算符时有可能无法确定是做加法还是做字符串连接。为避免混淆,请使用 & 运算符进行连接,并且改进程序代码的可读性。

如果至少有一个表达式不是 Variant,则可运用以下法则:

B、两个表达式都是 String,则连接。

C、一个表达式是数值数据类型而另一个是 Null 之外的任意 Variant,则相加。

E、一个表达式是 Empty Variant,则返回另一个不变的表达式作为 result。

F、一个表达式是数值数据类型,而另一个是 String,则产生一个类型不匹配错误。

 如果两个表达式都是 Variant 表达式,则可运用下列规则:

A、两个 Variant 表达式都是数值,则相加。

B、两个 Variant 表达式都是字符串,则连接。

C、一个 Variant 表达式是数值而另一个是字符串,则相加。

 对于只有数值数据类型表达式的单纯加法,result 的数据类型通常与其中最精确的表达式的数据类型相同。精确度由最低到最高的顺序是 Byte、Integer、Long、Single、Double、Currency 和 Decimal。

H、如果只有一个表达式是 Empty,则另一个表达式原封不动地作为 result 返回。

注意:加法和减法用到的精确度等级与乘法用到的精确度等级不一样。

用来求两数之差或表示数值表达式的负值。

– 运算符的语法具有以下几个部分:

在语法 1 中,– 运算符是求两数之差的算术减法运算符。在语法 2 中,– 运算符为一元负运算符,说明表达式的值为负值。

E、减法运算中有 Date 和其它任何数据类型,则 result 为一个 Date。

H、如果一个表达式是 Empty,则作为 0 处理。

注意:加法和减法用到的精确度等级与乘法用到的精确度等级不一样。

用于对一个变量或属性赋值。

= 运算符语法有如下几部分:

等号左边的名字可以是一个简单的标量变量或一个数组的元素。等号左边的属性只能是运行时可写的属性。

比较运算符具有以下几个部分:

在比较两个表达式的时候可能难以确定将要比较的表达式是数字还是字符串。下列将说明如何比较表达式,或说明当其中一个表达式不是 Variant 时,如何获得比较的结果。

(2)、两个表达式都是 String,则进行字符串比较

(3)、一个表达式是数值数据类型而另一个是数字 Variant、或可以为一数字,则进行数值比较。

(4)、一个表达式是数值数据类型而另一个是不能转换成数字的字符串 Variant,则产生类型不匹配的错误。

(5)、一个表达式是 String,而另一个是除了 Null 以外的任何 Variant,则进行字符串比较。

(6)、一个表达式是 Empty 而另一个是数值数据类型,则进行数值比较,使用 0 作为 Empty 表达式。

(7)、一个表达式是 Empty 而另一个是 String,则进行字符串比较,使用长度为零的字符串 ("") 作为 Empty 表达式。

4、两个都是 Variant 表达式的比较

如果 expression1 和 expression2 都是 Variant 表达式, 则它们的基本类型决定了比较方式。下面说明如何比较表达式,或指出通过比较得到的结果,此结果取决于 Variant 的基本类型:

(1)、两个 Variant 表达式都是数值,则进行数值比较。

(2)、两个 Variant 表达式都是字符串,则进行字符串比较。

(3)、一个 Variant 表达式是数值而另一个是字符串,则数值表达式小于字符串表达式。

(4)、一个 Variant 表达式是 Empty 而另一个是数值,则进行数值比较,使用 0 作为 Empty 表达式。

(5)、一个 Variant 表达式是 Empty 而另一个是字符串,则进行字符串比较,使用长度为零的字符串 ("") 作为 Empty 表达式。

5、牵涉四舍五入的问题

(4)、对于 Currency,任何小于 .0001 的小数将被舍弃;对于 Decimal,任何小于 1E-28 的小数将被舍弃,或者可能产生溢出错误。舍弃这样的小数部分会使原来不相等的两个数值经过比较后相等。

用来比较两个对象的引用变量。

Is 运算符的语法具有以下几个部分:

在以下示例中,A 和 B 已被设置成与 C 引用相同的对象:

在下例中,A 和 B 引用的对象与 C 相同:

Like 运算符的语法具有以下几个部分:

    在字符串比较中,Option Compare Binary 的结果是根据字符的内部二进制表示法导出的排序顺序得到的。在 Microsoft Windows 中,排序顺序由代码页决定。下例说明通常二进制的排序顺序:

    在字符串比较中,Option Compare Text 的结果是字符串比较,它建立在不区分大小写的文本排序顺序基础上,而这一排序顺序是由系统的区域确定的。在对相同的字符使用 Option Compare Text 时会产生以下文本排序顺序:

    内建的模式匹配功能提供了多种工具来进行字符串比较。有了模式匹配功能就可以使用通配符、字符串列表或字符区间的任何组合来匹配字符串。下列表格指出 pattern 中允许的字符以及它们与什么进行匹配:

    在中括号 ([ ]) 中,可以用由一个或多个字符 (charlist) 组成的组与 string 中的任一字符进行匹配,这个组几乎包括任何一个字符代码以及数字。

    注意:为了与左括号 ([)、问号 (?)、数字符号 (#) 和星号 (*) 等特殊字符进行匹配,可以将它们用方括号括起来。不能在一个组内使用右括号 (]) 与自身匹配,但在组外可以作为个别字符使用。

    通过在范围的上、下限之间用连字符 (–),charlist 可以指定字符的范围。例如,如果 string 中相应字符的位置包括 A–Z 之间的任意大写字母,则 [A-Z] 得到一个匹配。不需要分界符,方括号内就可以包括多个范围。

E, e 相匹配。此范围与 _ 或 _ 不匹配,因为按照排序顺序,重音字符在非重音字符之后。

(1)、charlist 开头的惊叹号 (!) 意味着,如果在 string 中找到任何不属于 charlist 的字符,则存在一个匹配。如果在方括号之外使用惊叹号,则惊叹号与自身匹配。

(2)、连字符 (–) 可以出现在 charlist 的开头(如果使用惊叹号,则在惊叹号之后),也可以出现在 charlist 的结尾与自身匹配。在任何其它地方,连字符用来识别字符的范围。

(3)、当指定了字符范围时,这些字符必须按照升序(从最小到最大)顺序来显示。[A-Z] 是有效模式,但 [Z-A] 不是。

(4)、字符序列 [] 被看作是长度为零的字符串 ("")。

    某些语言的字母表中有一些特殊字符,它们表示两个分开的字符。例如,在一些语言中,当字符 "a" 与 "e" 同时出现时,用 "_" 来表示字符 "a" 与 "e"。Like 运算符可以辨认出单一的特殊字符和两个个别字符是否相等。

    当一个语言使用了一个特殊字符,而且这个字符在系统地区设置中已被指定的时候,在 pattern 或 string 中出现的单一特殊字符将与其他字符串中等价的两个字符相匹配。与此相似,由方括号括起来的 pattern 中的单一特殊字符(字符本身在列表或范围内)将与 string 中等价的两个字符序列匹配。

用来强制两个表达式作字符串连接。

& 运算符的语法具有以下几个部分:

D、只要有一个 expression 是 Null,那么在与其它表达式连接时,都将其作为长度为零的字符串 ("") 处理。

E、任何 Empty 类型表达式也作为长度为零的字符串处理。

可用于连接两个字符串表达式。

+ 运算符的语法具有以下几个部分:

A、两个表达式都是 String,则连接。

C、两个 Variant 表达式都是字符串,则连接。

}

这个最简单,只要把变量描述成static就可以了,在form2中直接引用form1的变量,代码如下:

Form2中的钮扣按钮如下:

第二个方法是用构造函数:

Form2 的构造函数这样写:

第三个方法是用delegate,代码如下:

第一个是双向传值,也就是说,form1和form2改变i的值,另一方也会受到影响。

}

我要回帖

更多关于 二进制加法溢出 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信