一、Lua运算符
算术运算符
关系运算符
逻辑运算符
其他运算符
1. 算术运算符
A , B = 10 , 20 A, B = 10, 20A,B=10,20
- 幂:^
在 lua 中,/ 用作除法运算,计算结果包含小数部分,// 用作整除运算,计算结果不包含小数部分:
a = 5 b = 2 print("除法运算 - a/b 的值为 ", a / b ) print("整除运算 - a//b 的值为 ", a // b )
除法运算 - a/b 的值为 2.5 整除运算 - a//b 的值为 2
2. 关系运算符
A,B=10,20
不等于: ~=
3. 逻辑运算符
A,B=true,false
4. 其他运算符
注意: # 对 table 获取长度时,根据的是表的最大索引值。(也不确定是)
(当所获取的table中存在nil时,#返回的数值是无意义的。)
local tab = {} tab[1] = 1 tab[2] = 2 tab[3] = nil print(#tab) --结果为2
- 有的结果是0,我本地跑出3。所以不在讨论存在nil的table取长度情况。
local tab2 = {} tab2[1] = nil tab2[2] = 2 tab2[3] = 3 print(#tab2) --结果为3
对于不存在nil的table,取值也非常玄乎!!!
所以我们采用下面的封装方法,获取table的元素个数:(不含nil)
function table.length(t) local i = 0 for k, v in pairs(t) do i = i + 1 end return i end
5. 运算符优先级
从高到低的顺序:
^ not - (unary) * / % + - .. < > <= >= ~= == and or
除了 ^ 和 .. 外所有的二元运算符都是左连接的。
-x^2 --<--> -(x^2)
x^y^z --<--> x^(y^z)
1
2
二、三目运算符:(a and {b} or {c})[1]
Lua 中没实现三目运算的操作。
C语言中:a ? b : c, a 为 true 返回 b 否则返回 c。
这里用Lua代码等价实现三目运算:
(a and {b} or {c})[1]
三、不同于C的:and 和 or
两个 number 类型的数值:
进行 and 操作,返回在 and 右边那个数值。
进行 or 操作,返回在or 左边那个数值。
a, b, c = 1, 2, 3 print(a and b) --> 2 print(a or b) --> 1 print(a and b or c) --> 2 print(a or b and c) --> 1