Lua 基础教程(六)运算符
hudson 译 原文
运算符是一种告诉解释器执行特定数学或逻辑操作的符号。Lua语言中内置的运算符丰富多样,包括以下类型的运算符 :
- 算术运算符
- 关系运算符
- 逻辑运算符
- 其它运算符
下面逐一介绍算术、关系、逻辑和其他运算符。
算术运算符
以下表格显示了Lua语言支持的所有算术运算符。假设变量A的值为10,变量B的值为20,则 :
| 运算符 | 描述 | 示例 |
|---|---|---|
| + | 加法 | A + B = 30 |
| - | 减法 | A - B = -10 |
| * | 乘法 | A * B = 200 |
| / | 除法 | B / A = 2 |
| % | 取模 | B % A = 0 |
| 幂运算 | A^2 = 100 |
以上是算术运算符的示例。
关系运算符
以下表格显示了Lua语言支持的所有关系运算符。假设变量A的值为10,变量B的值为20,则 :
| 运算符 | 描述 | 示例 |
|---|---|---|
| == | 检查两个操作数的值是否相等,如果是,则条件为真。 | (A == B) 不为真。 |
| ~= | 检查两个操作数的值是否不相等,如果值不相等,则条件为真。 | (A ~= B) 为真。 |
| 检查左操作数的值是否大于右操作数的值,如果是,则条件为真。 | (A > B) 不为真。 | |
| < | 检查左操作数的值是否小于右操作数的值,如果是,则条件为真。 | (A < B) 为真。 |
| >= | 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件为真。 | (A >= B) 不为真。 |
| <= | 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件为真。 | (A <= B) 为真。 |
以上是关系运算符的示例。
逻辑运算符
以下表格显示了Lua语言支持的所有逻辑运算符。假设变量A的值为true,变量B的值为false,则 -
| 运算符 | 描述 | 示例 |
|---|---|---|
| and | 称为逻辑AND运算符。如果两个操作数都非零,则条件为真。 | (A and B) 为假。 |
| or | 称为逻辑OR运算符。如果两个操作数中任意一个非零,则条件为真。 | (A or B) 为真。 |
| not | 称为逻辑NOT运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑NOT运算符将使其为假。 | !(A and B) 为真。 |
其它运算符
Lua语言支持的其他杂项运算符包括连接和长度。
| 运算符 | 描述 | 示例 |
|---|---|---|
| .. | 将两个字符串连接起来 | a..b将返回"Hello World",其中a为"Hello ",b为"World" |
| # | 一元运算符,返回字符串或表的长度 | #"Hello"将返回5。 |
运算符优先级
运算符优先级确定表达式中项的分组方式。这会影响表达式的求值方式。某些运算符的优先级高于其他运算符;例如,乘法运算符的优先级高于加法运算符 。
举例来说,x = 7 + 3 * 2;这里x被赋值为13,而不是20,因为乘法运算符 * 的优先级高于加法运算符 +,所以它首先计算3*2,然后再加上7。
下表中,优先级最高的运算符出现在表的顶部,优先级最低的出现在底部。在表达式中,优先级较高的运算符将首先进行求值。
| 类别 | 运算符 | 结合性 |
|---|---|---|
| 一元 | not # - | 从右到左 |
| 连接 | .. | 从右到左 |
| 乘法 | * / % | 从左到右 |
| 加法 | + - | 从左到右 |
| 关系 | < > <= >= == ~= | 从左到右 |
| 相等 | == ~= | 从左到右 |
| 逻辑AND | and | 从左到右 |
| 逻辑OR | or | 从左到右 |