运算符
算术运算符
操作符 | 描述 |
---|---|
+ | 加法 |
- | 剪法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
^ | 幂运算 |
例:
a = 10
b = 20
c = a + b
print("a + b = ", c)
c = a - b
print("a - b = ", c)
c = a * b
print("a * b = ", c)
c = a / b
print("a / b = ", c)
c = a % b
print("a % b = ", c)
c = a ^ 2
print("a ^ b = ", c)
c = -a
print("c = ", c)
输出结果:
a + b = 30
a - b = -10
a * b = 200
a / b = 0.5
a % b = 10
a ^ b = 100
c = -10
-
注意
-
Lua 中的加号不能用作字符串相连操作,而字符串相连操作是用” .. “。
在 Lua 中也不能使用 ++或 - -,若要在自身加一或减一使用本身减一或加一。如:A = A + 1 、 B = B - 1。
关系运算符
运算符 | 描述 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 |
~= | 不等于 |
例:
a = 10
b = 20
print("a > b",a > b)
print("a < b",a < b)
print("a >= b", a >= b)
print("a <= b", a <= b)
print("a == b", a == b)
print("a ~= b", a ~= b)
输出结果:
a > b false
a < b true
a >= b false
a <= b true
a == b false
a ~= b true
注意:强调:加冕知识点:
: 在Lua中只有 false 和 nil被视为假。其他都视为真。和 C# 有很大区别。
逻辑运算符
lua 中的逻辑运算符和 C# 表达表达方式不同。其意义相同。
操作符 | 描述 |
---|---|
and | 逻辑与 |
or | 逻辑或 |
not | 逻辑非 |
例:
a = true
b = false
a = true
b = false
print("a and b = ", a and b)--逻辑与操作符。若 a 为 fakse,则返回 a,否则返回b.
print("a or b = ", a or b) -- 若 a 为 true, 则返回 a,否则返回 b.
print("not a = ", not a)--如果条件为 true,返回 false
输出结果:
a and b = false
a or b = true
not a = false
使用技巧:
如果 x 为 false 或者 nil 则给 x 赋初始值 v
x = x or v
等价于
if(not x)
then
x = v
end
lua中的三目运算:
三目运算符:
在 Lua 中没有三目运算,可以用 and 和 or 模拟。
a and b or c 这种写法当 b 为 false 始终返回 c,也就是说 b 不能为 false 和 nil。
两种方式避免这种情况
1、使用 if-else避免。
2、使用 table 表: (a and {b} or {c})[1]
操作符 | 描述 |
---|---|
.. | 连接两个字符串 |
# | 返回字符串或表的长度 |
# 使用注意:
1、只有当键值是连续的数值键值时, 返回值才是有意义的。
2、当 table 中, 存在 nil 时, # 返回的数值也是无意义的。
只有当 table 的键值是连续数值时, # 返回值才是有意义的。 如果在 table 中,
存在非数值键值, 或者 nil时,其 table 并不是一个序列, 因此# table并未定义,
其返回值就无意义, 也就是说 #table 值可能在不同的平台上, 返回值不一样。
优先级顺序
优先级顺序
^
not # - (一元)
* / %
+ -
..
> < <= >= ~= ==
and
or