操作符
操作符
操作符是用于告诉解释器执行特定的数学或逻辑运算的符号。Lua 语言有丰富的内置操作符,主要包括以下几类:
- 算术运算操作符
- 关系运算操作符
- 逻辑运算操作符
- 其它操作符
算术去处操作符
下面的表中列出了所有 Lua 语言支持的算术运算操作符。假设 A 变量的值为 10,B 变量的值为 20,则:
操作符 | 描述 | 示例 |
---|---|---|
+ | 两个操作数据相加 | A + B = 30 |
- | 第一个操作数减去第二个操作数据 | A - B = 10 |
* | 两个操作数相乘 | A * B = 200 |
% | 模除操作符 | A % B = 0 |
^ | 幂运算符 | A ^ 2 = 100 |
- | 一元减操作符用于取反 | -A = -10 |
关系运算符
下面的表列出了 Lua 支持的所有关系运算符。假设 A 的值为 10,B 的值为 20,则:
操作符 | 描述 | 示例 |
---|---|---|
== | 判断两个操作数是否相等,若相等则条件为真,否则为假。 | (A == B) 为假。 |
~= | 判断两个操作数是否相等,若不相等则条件为真,否则为假。 | (A ~= B) 为真。 |
> | 如果左操作数大于右操作数则条件为真,否则条件为假。 | (A > B) 为假。 |
< | 如果左操作数小于右操作数则条件为真,否则条件为假。 | (A < B) 为真。 |
>= | 如果左操作数大于或等于右操作数则条件为真,否则条件为假。 | (A >= B) 为假。 |
<= | 如果左操作数小于或等于右操作数则条件为真,否则条件为假。 | (A <= B) 为真。 |
逻辑运算符
下面的表列出了 Lua 支持的所有逻辑运算符。假设 A 的值为 真(非零),B 的值为 假(零),则:
操作符 | 描述 | 示例 |
---|---|---|
and | 逻辑与运算符。如果两个操作数都非零,则条件为真。 | (A and B) 为假。 |
or | 逻辑或运算符。如果两个操作数中其中有一个非零,则条件为真。 | (A or B) 为真。 |
not | 逻辑非运算符。翻转操作数的逻辑状态。如果条件是真,则逻辑非运算符会将其变成假。 | !(A and B) 为真。 |
其它操作符
Lua 语言还支持另外两个操作符:
操作符 | 描述 | 示例 |
---|---|---|
.. | 连接两个字符串。 | 若 a 为 "Hello",b 为 "World",则 a..b 返回 "Hello World"。 |
# | 一元运算符,返回字符串或者表的长度。 | #"Hello" 返回 5。 |
操作符优先级
操作符的优先级将决定表达式中的项如何组合。这会影响到表达式的求值。一些操作符比另外一些操作符有更高的优先级。例如,乘法操作符优先级比加法操作符更高。
例如 x = 7 +3*2,这里 x 的值为 13,而不是 20。这是因为操作符 * 优级级比操作符 + 优先级更高,所以先得到 3*2 的乘积,然后再加上 7。
下面的表中,从上到下优先级递减。在每个表达式中,高优先级操作数先运算。
分类 | 操作数 | 结合性 |
---|---|---|
一元运算符类 | not # - | 从右至左 |
连接运算符 | .. | 从右至左 |
乘除运算符类 | * / % | 从左至右 |
加减运算符类 | + - | 从左至右 |
关系运算符类 | < > <= >= == ~= | 从左至右 |
等于运算符类 | == ~= | 从左至右 |
逻辑与运算符 | and | 从左至右 |
逻辑或运算符 | or | 从左至右 |