跳到主要内容
版本:release

算术运算表达式

语法

形式语法
1表达式 + 表达式
2表达式 - 表达式
3表达式 * 表达式
4表达式 / 表达式
5表达式 % 表达式

描述

算术运算表达式用于对两个表达式的值进行运算。

下表列出了当运算符和左侧操作数的类型确定时,支持的右侧操作数的类型

左侧操作数类型 \ 运算符+-*/%
intint float raw_pointerint floatint floatint floatint float
floatint floatint floatint floatint floatint float
stringstring int
arrayarrayarray
bufferstring buffer
mapmaparray map
raw_pointerintint raw_pointer

当操作数两端都是数值类型(intfloat)时,运算符是数值意义上的算数运算;如果两侧的类型 不一致,则将 int 类型的操作数隐式转换为 float 类型后再进行运算。

算数运算任一操作数的类型是 float 时, 运算结果的类型为 float;否则结果类型为 int

对于非算数运算,参见:

+ 加法运算

  • string 类型,执行字符串链接,即将左右两侧的字符串连接成一个新的字符串。 如果右侧操作数是 int 类型,则将其转换为字符串后再进行连接。

  • array 类型,执行数组连接,即将左右两侧的数组连接成一个新的数组。

  • map 类型,执行映射连接,即将右侧映射的键值对添加到左侧映射中,产生一个新的映射。 如果两个映射中有相同的键,则右侧映射的键值对会覆盖左侧映射中的键值对。

  • buffer 类型,执行缓冲区连接,即将左右两侧的缓冲区连接成一个新的缓冲区。 如果右侧操作数是 string 类型,则将其转换为缓冲区后再进行连接。

  • raw_pointer 类型,执行指针偏移运算,即将左侧的指针向前或向后移动右侧指定的字节数。

- 减法运算

  • array 类型,执行数组差集运算,即从左侧数组中移除所有在右侧数组中出现的元素,产生一个新的数组。
  • raw_pointer 类型,执行指针偏移运算,即将左侧的指针向前或向后移动右侧指定的字节数。 如果右侧操作数是 raw_pointer 类型,则计算两个指针之间的字节差值,结果类型为 int
  • map 类型,执行映射键移除运算,即从左侧映射中移除右侧数组或映射中指定的键,产生一个新的映射。

示例

int a = 10;
int b = 20;
int c = a + b * 2; // c 的值为 50
float d = 3.14;
float e = a + d; // e 的值为 13.14

string s1 = "Hello, ";
string s2 = "World!";
string s3 = s1 + s2; // s3 的值为 "Hello, World!"

array arr1 = [1, 2, 3];
array arr2 = [4, 5, 6];

array arr3 = arr1 + arr2; // arr3 的值为 [1, 2, 3, 4, 5, 6]

map map1 = {"a": 1, "b": 2};
map map2 = {"b": 3, "c": 4};
map map3 = map1 + map2; // map3 的值为 {"a": 1, "b": 3, "c": 4}
map map4 = map3 - ["a", "c"]; // map4 的值为 {"b": 3}