Lua 運算符號
運算符是一個特殊的符號,用於告訴解釋器執行特定的數學或邏輯運算。Lua提供了以下幾種運算符類型:
- 算數運算符號
- 關係運算符號
- 邏輯運算符號
- 其他運算符號
算數運算符
下表列出了 Lua 語言中的常用算數運算符,設定 A 的值為10,B 的值為 20:
操作符 | 描述 | 实例 |
---|---|---|
+ | 加法 | A + B 輸出結果 30 |
- | 减法 | A - B 輸出結果 -10 |
* | 乘法 | A * B 輸出結果 200 |
/ | 除法 | B / A 輸出結果 2 |
% | 取餘數 | B%A 輸出結果 0 |
^ | 冪次 | A ^ 2 輸出結果 100 |
- | 負號 | - A 輸出結果 v -10 |
實例
我們可以通過以下實例來更加透徹的理解算數運算符好的應用:
a = 21
b = 10
c = a + b
print("Line 1 - c 的值為 ", c)
c = a - b
print("Line 2 - c 的值為 ", c)
c = a * b
print("Line 3 - c 的值為 ", c)
c = a / b
print("Line 4 - c 的值為 ", c)
c = a % b
print("Line 5 - c 的值為 ", c)
c = a ^ 2
print("Line 6 - c 的值為 ", c)
c = -a
print("Line 7 - c 的值為 ", c)
以上程式執行結果為:
Line 1 - c 的值為 31
Line 2 - c 的值為 11
Line 3 - c 的值為 210
Line 4 - c 的值為 2.1
Line 5 - c 的值為 1
Line 6 - c 的值為 441
Line 7 - c 的值為 -21
關係運算符
下表列出了 Lua 語言中的常用關係運算符,設定 A 的值為10,B 的值為 20:
操作符 | 描述 | 实例 |
---|---|---|
== | 等於,檢測兩個值是否相等,相等返回 true,否則返回 false | (A == B) 為 false。 |
~= | 不等於,檢測兩個直是否相等,相等返回 false,否則返回 true | (A ~= B) 為 true。 |
> | 大於,如果左邊的值大於右邊的值,返回 true,否則返回 false | (A > B) 為 false。 |
< | 小于,如果左邊的值大於右邊的值,返回 false,否則返回 true | (A < B) 為 true。 |
>= | 大於等於,如果左邊的值大於等于右邊的值,返回 true,否則返回 false | (A >= B) 返回 false。 |
<= | 小於等於, 如果左邊的值小於等於右邊的值,返回 true,否則返回 false | (A <= B) 返回 true。 |
實例
我們可以通過以下實例来更加透徹的理解關係運算符的應用:
a = 21
b = 10
if(a == b ) then
print("Line 1 - a 等於 b")
else
print("Line 1 - a 不等於 b")
end
if(a ~= b ) then
print("Line 2 - a 不等於 b")
else
print("Line 2 - a 等於 b")
end
if(a < b)then
print("Line 3 - a 小於 b")
else
print("Line 3 - a 大于等於 b")
end
if(a > b) then
print("Line 4 - a 大於 b")
else
print("Line 5 - a 小于等於 b")
end
-- 修改 a 和 b 的值
a = 5
b = 20
if(a <= b) then
print("Line 5 - a 小於等於 b")
end
if(b >= a) then
print("Line 6 - b 大於等於 a")
end
以上程式執行结果為:
Line 1 - a 不等於 b
Line 2 - a 不等於 b
Line 3 - a 大於等於 b
Line 4 - a 大於 b
Line 5 - a 小於等於 b
Line 6 - b 大於等於 a
邏輯運算符
下表列出了 Lua 語言中的常用邏輯運算符,設定 A 的值為 true,B 的值為 false:
操作符 | 描述 | 实例 |
---|---|---|
and | 邏輯與操作符號。 若 A 為 false,則返回 A,否則返回 B。 | (A and B) 為 false。 |
or | 邏輯與操作符號。 若 A 為 true,則返回 A,否則返回 B。 | (A or B) 為 true。 |
not | 邏輯非運算符。與邏輯運算结果相反,如果條件為 true,邏輯非為 false。 | not(A and B) 為 true。 |
實例
我們可以通過以下實例來更加透徹的理解邏輯運算符的應用:
a = true
b = true
if(a and b) then
print("a and b - 條件為 true")
end
if(a or b) then
print("a or b - 條件為 true)
end
print("---------分割線---------")
-- 修改 a 和 b 的值
a = false
b = true
if(a and b) then
print("a and b - 條件為 true")
else
print("a and b - 條件為 false")
end
if(not(a and b)) then
print("not(a and b) - 條件為 true")
else
print("not(a and b) - 條件為 false")
end
以上程式執行结果為:
a and b - 條件為 true
a or b - 條件為 true
----------分割線----------
a and b - 條件為 false
not(a and b) - 條件為 true
其他運算符
下表列出了 Lua 語言中的連接運算符語計算表或字符串長度的運算符:
操作符 | 描述 | 實例 |
---|---|---|
.. | 連接兩個字符串 | a..b ,其中 a 為 "Hello " , b 為 "World", 輸出结果為 "Hello World"。 |
# | 一元運算符,返回字符串或表的長度。 | #"Hello" 返回 5 |
實例
我們可以通過以下實例来更加透徹的理解連接運算符與計算表或字符串長度的運算符的應用:
a = "Hello "
b = "World"
print("連接字符串 a 和 b ", a..b)
print("b 字符串長度 ",#b)
print("字符串 Test 長度 ",#"Test")
print("w3cschool菜鳥教程網址長度 ",#"www.w3cschool.cc)
以上程式執行结果為:
連接字符串 a 和 b HelloWorld
b 字符串長度 5
字符串 Test 長度 4
w3cschool 菜鳥教網網址長度 16
運算符優先權
從高到低的順序:
^
not -(unary)
* /
+ -
..
< > <= >= ~= ==
and
or
除了^和..外所有的二元運算符都是左連接的。
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)
實例
我們可以通過以下實例來更加透徹的了解 Lua 語言運算符的優先級:
a = 20
b = 10
c = 15
d = 5
e = (a + b) * c / d;--(30 * 15) / 5
print("(a + b) * c / d 運算值為 :",e)
e =((a + b) * c) / d;--(30 * 15) / 5
print("((a + b) * c) / d 運算值為 :",e)
e =(a + b) * (c / d);--(30) * (15 / 5)
print("(a + b) * (c / d) 運算值為 :",e)
e = a + (b * c)/ d;--20+(150/5)
print("a + (b * c) / d 運算值為 :",e )
以上程式執行結果為:
(a + b) * c / d 運算值為:90.0
((a + b) * c) / d 運算值為:90.0
(a + b) * (c / d) 運算值為:90.0
a + (b * c) / d 運算值為:50.0