Skip to content

+ 和 += 运算符

用于将两个数相加,或——取决于操作数类型——连接两个字符串。复合形式**+=**一步完成加法并赋值。

语法:

result = expression1 + expression2
variable += expression (twinBASIC)

result
任意数值变量。
variable
(twinBASIC) 任意数值或String变量,或任何可写属性。
expression, expression1, expression2
任意表达式。

使用**+**运算符时,可能不清楚是执行加法还是字符串连接。使用&运算符进行连接可以消除歧义并产生自文档化的代码。

如果至少有一个表达式不是Variant,则适用以下规则:

如果
两个表达式均为数值(ByteBooleanIntegerLongLongLongLongPtrSingleDoubleDateCurrency相加。
两个表达式均为String连接。
一个表达式为数值,另一个为除Null外的任意Variant相加。
一个表达式为String,另一个为除Null外的任意Variant连接。
一个表达式为Empty Variant返回另一个表达式不变作为result
一个表达式为数值,另一个为String产生Type mismatch错误。
任一表达式为NullresultNull

如果两个表达式均为Variant表达式,则适用以下规则:

如果
两个Variant表达式均为数值相加。
两个Variant表达式均为字符串连接。
一个Variant表达式为数值,另一个为字符串相加。

对于仅涉及数值表达式的简单算术加法,result的数据类型通常与最精确的表达式相同。精度从低到高的顺序为ByteIntegerLongLongLongSingleDoubleCurrency。以下是例外情况:

如果result
SingleLong相加Double
resultLongSingleDate变体,溢出了其合法范围转换为Double变体。
resultByte变体,溢出了其合法范围转换为Integer变体。
resultInteger变体,溢出了其合法范围转换为Long变体。
Date与任何数据类型相加Date

如果一个或两个表达式为Null表达式,则resultNull。如果两个表达式均为Empty,则resultInteger。但是,如果仅一个表达式为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).

另请参阅

twinBASIC及其LOGO版权为作者"韦恩"所有