Lua运算符
运算符是告诉解释器执行特定数学或逻辑操作的符号。 Lua语言内置运算符丰富,并提供以下类型的运算符 -
- 算术运算符
- 关系运算符
- 逻辑运算符
- 其它运算符
本教程将逐一解释算术,关系,逻辑和其他杂项运算符。
1. 算术运算符
下表显示了Lua语言支持的所有算术运算符。 假设变量A=10
,变量B=20
,然后 -
运算符 | 描述 | 示例 |
---|---|---|
+ |
相加两个操作数 | A + B = 30 |
- |
从第一个减去第二个操作数 | A - B = -10 |
* |
将两个操作数相乘 | A * B = 200 |
/ |
用除分子除以分子 | B / A = 2 |
% |
模数运算符,整数除法后的余数 | B % A = 0 |
^ |
指数运算符取指数幂值 | A^2 = 100 |
- |
一元,充当否定 | -A = -10 |
2. 关系运算符
下表显示了Lua语言支持的所有关系运算符。 假设变量A=10
,变量B=20
,然后 -
运算符 | 描述 | 示例 |
---|---|---|
== |
检查两个操作数的值是否相等,如果相等,则条件变为真。 | (A == B) 结果为false |
~= |
检查两个操作数的值是否相等,如果值不相等则条件变为true 。 |
(A ~= B) 结果为true |
> |
检查左操作数的值是否大于右操作数的值,如果是,则条件变为true 。 |
(A > B) 结果为false |
< |
检查左操作数的值是否小于右操作数的值,如果是,则条件变为true 。 |
(A < B) 结果为true |
>= |
检查左操作数的值是否大于或等于右操作数的值,如果是,则条件变为true 。 |
(A >= B) 结果为false |
<= |
检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为true 。 |
(A <= B) 结果为true |
3. 逻辑运算符
下表显示了Lua语言支持的所有逻辑运算符。 假设变量A=true
,变量B=false
,则 -
运算符 | 描述 | 示例 |
---|---|---|
and |
逻辑与运算符。如果两个操作数都不为零,则条件成立。 | (A and B) 结果为false |
or |
逻辑或运算符。 如果两个操作数中的任何一个不为零,则条件变为真。 | (A or B) 结果为true |
not |
逻辑非运算符。用于反转其操作数的逻辑状态。 如果条件为真,则逻辑非运算符将为false 。 |
!(A and B) 结果为true |
4. 杂项运算符
Lua语言支持的其他运算符包括连接和长度。
编号 | 描述 | 示例 |
---|---|---|
... |
连接两个字符串 | 如果a 为Hello ,b 为World ,a..b 将返回Hello World 。 |
# |
返回字符串或表长度的一元运算符。 | #"Hello" 将返回 5 |
5. Lua运算符优先级
运算符优先级确定表达式中的术语分组。 这会影响表达式的计算方式。 某些运算符的优先级高于其他运算符; 例如,乘法运算符的优先级高于加法运算符 -
例如,x = 7 + 3 * 2
; 这里x
赋值为13
,而不是20
,因为运算符 *
的优先级高于+
,所以它首先乘以3 * 2
然后再加上7
。
此处,具有最高优先级的运算符显示在表的顶部,具有最低优先级的运算符显示在底部。 在表达式中,将首先评估更高优先级的运算符。
类别 | 操作符 | 关联性 |
---|---|---|
一元 | not # - |
右到左 |
连接 | .. |
右到左 |
乘法 | * / % |
左到右 |
加法 | + - |
左到右 |
关系 | < > <= >= == ~= |
左到右 |
相等 | == ~= |
左到右 |
逻辑与 | and |
左到右 |
逻辑或 | or |
左到右 |