1 算數(shù)運(yùn)算符
+ - * / ^ -
算數(shù)運(yùn)算符共有6個肚吏,它們的操作數(shù),都是實(shí)數(shù)荤崇。
- 一元運(yùn)算符: - (負(fù)號)
- 二元運(yùn)算符: + - * / ^ (加 減 乘 除 冪)
2 關(guān)系運(yùn)算符
< > <= >= == ~=
關(guān)系運(yùn)算符都是二元運(yùn)算符拌屏,它們的返回結(jié)果為true或者false。
進(jìn)行相等比較時(shí):
- 操作符:== ~= (等于 不等于)术荤;
- nil只和自己相等倚喂;
- 如果兩個操作數(shù)的類型不相同,則認(rèn)為兩者不同瓣戚;
- table端圈,userdata,function 通過引用進(jìn)行比較子库,即當(dāng)且僅當(dāng)兩者表示同一個對象時(shí)認(rèn)為兩者相同舱权。
進(jìn)行大小比較時(shí):
- 操作符:< > <= >= (小于 大于 小于等于 大于等于);
- 如果兩個操作數(shù)的類型不相同仑嗅,會報(bào)錯宴倍;
- 數(shù)字進(jìn)行比較,按照傳統(tǒng)的數(shù)字大小進(jìn)行判定仓技;
- 字符串進(jìn)行比較時(shí)鸵贬,按字母的順序進(jìn)行判定。
"0" == 0 -- false
2 < 15 -- true
"2" < "15" -- false (alphabetical order!)
2 < "15" -- fault!!!
3 邏輯運(yùn)算符
and or not
not的返回結(jié)果是true或者false
print(not nil) -- true
print(not false) -- true
print(not 0) -- false
print(not not nil) -- false
and和or的運(yùn)算結(jié)果和他的兩個操作數(shù)有關(guān)脖捻,不是true或者false
a and b -- 如果a為false恭理,則返回a,否則返回b
a or b -- 如果a為true郭变,則返回a颜价,否則返回b
例如:
print(4 and 5) -- 5
print(nil and 13) -- nil
print(false and 13) -- false
print(4 or 5) -- 4
print(false or 5) -- 5
這樣涯保,C語言中的三元運(yùn)算符
a ? b : c
在Lua中等價(jià)于:
(a and b) or c
4 連接運(yùn)算符
..
用于字符串連接,如果操作數(shù)為數(shù)字周伦,將被自動轉(zhuǎn)化為字符串
print("Hello " .. "World") -- Hello World
print(0 .. 1) -- 01
5 優(yōu)先級
從高到低的順序是:
^
not - (unary)
* /
+ -
..
< > <= >= ~= ==
and
or
除了^和..外夕春,所有的二元運(yùn)算符都是左連接的。
a + i < b / 2 + 1 <--> (a + i) < ((b / 2) + 1)
5 + x ^ 2 * 8 <--> 5 + ((x ^ 2) * 8)
a < y and y <= z <--> (a < y) and (y <= z)
- x ^ 2 <--> - (x ^ 2)
x ^ y ^ z <--> x ^ (y ^ z)