+ 和 += 运算符
用于将两个数相加,或——取决于操作数类型——连接两个字符串。复合形式**+=**一步完成加法并赋值。
语法:
result = expression1 + expression2
variable += expression (twinBASIC)
- result
- 任意数值变量。
- variable
- (twinBASIC) 任意数值或String变量,或任何可写属性。
- expression, expression1, expression2
- 任意表达式。
使用**+**运算符时,可能不清楚是执行加法还是字符串连接。使用&运算符进行连接可以消除歧义并产生自文档化的代码。
如果至少有一个表达式不是Variant,则适用以下规则:
| 如果 | 则 |
|---|---|
| 两个表达式均为数值(Byte、Boolean、Integer、Long、LongLong、LongPtr、Single、Double、Date、Currency) | 相加。 |
| 两个表达式均为String | 连接。 |
| 一个表达式为数值,另一个为除Null外的任意Variant | 相加。 |
| 一个表达式为String,另一个为除Null外的任意Variant | 连接。 |
| 一个表达式为Empty Variant | 返回另一个表达式不变作为result。 |
| 一个表达式为数值,另一个为String | 产生Type mismatch错误。 |
| 任一表达式为Null | result为Null。 |
如果两个表达式均为Variant表达式,则适用以下规则:
| 如果 | 则 |
|---|---|
| 两个Variant表达式均为数值 | 相加。 |
| 两个Variant表达式均为字符串 | 连接。 |
| 一个Variant表达式为数值,另一个为字符串 | 相加。 |
对于仅涉及数值表达式的简单算术加法,result的数据类型通常与最精确的表达式相同。精度从低到高的顺序为Byte、Integer、Long、LongLong、Single、Double、Currency。以下是例外情况:
| 如果 | 则 result 为 |
|---|---|
| Single和Long相加 | Double。 |
| result是Long、Single或Date变体,溢出了其合法范围 | 转换为Double变体。 |
| result是Byte变体,溢出了其合法范围 | 转换为Integer变体。 |
| result是Integer变体,溢出了其合法范围 | 转换为Long变体。 |
| Date与任何数据类型相加 | Date。 |
如果一个或两个表达式为Null表达式,则result为Null。如果两个表达式均为Empty,则result为Integer。但是,如果仅一个表达式为Empty,则返回另一个表达式不变作为result。
INFO
加法和减法使用的精度顺序与乘法使用的精度顺序不同。
复合赋值
x += y是twinBASIC中x = x + y的简写。左侧只计算一次;结果遵循上述相同的类型提升和Null/Empty规则。与所有twinBASIC的复合赋值运算符一样,**+=**是语句,不是表达式——它不产生值。
vb
Dim Total As Long = 0
Total += 5 ' Total is now 5.
Total += 7 ' Total is now 12.
Dim Greeting As String = "Hello"
Greeting += ", world" ' Greeting is now "Hello, world".示例
本示例使用**+运算符对数求和。+**运算符也可用于连接字符串,但为了消除歧义,请改用&运算符。
vb
Dim MyNumber, Var1, Var2
MyNumber = 2 + 2 ' Returns 4.
MyNumber = 4257.04 + 98112 ' Returns 102369.04.
Var1 = "34": Var2 = 6 ' Initialize mixed variables.
MyNumber = Var1 + Var2 ' Returns 40.
Var1 = "34": Var2 = "6" ' Initialize variables with strings.
MyNumber = Var1 + Var2 ' Returns "346" (string concatenation).