當前位置:
首頁 > 知識 > Lua 運算符

Lua 運算符

運算符是一個特殊的符號,用於告訴解釋器執行特定的數學或邏輯運算。Lua提供了以下幾種運算符類型:

  • 算術運算符

  • 關係運算符

  • 邏輯運算符

  • 其他運算符


Lua 運算符

算術運算符

下表列出了 Lua 語言中的常用算術運算符,設定 A 的值為10,B 的值為 20:


操作符 描述 實例
+ 加法 A + B 輸出結果 30
- 減法 A - B 輸出結果 -10
* 乘法 A * B 輸出結果 200
/ 除法 B / A w輸出結果 2
% 取余 B % A 輸出結果 0
^ 乘冪 A^2 輸出結果 100
- 負號 -A 輸出結果v -10

實例

我們可以通過以下實例來更加透徹的理解算術運算符的應用:

a = 21b = 10c = a + bprint("Line 1 - c 的值為 ", c )c = a - bprint("Line 2 - c 的值為 ", c )c = a * bprint("Line 3 - c 的值為 ", c )c = a / bprint("Line 4 - c 的值為 ", c )c = a % bprint("Line 5 - c 的值為 ", c )c = a^2print("Line 6 - c 的值為 ", c )c = -aprint("Line 7 - c 的值為 ", c )

以上程序執行結果為:

Line 1 - c 的值為 31Line 2 - c 的值為 11Line 3 - c 的值為 210Line 4 - c 的值為 2.1Line 5 - c 的值為 1Line 6 - c 的值為 441Line 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 = 21b = 10if( a == b )then
print("Line 1 - a 等於 b" )else
print("Line 1 - a 不等於 b" )endif( a ~= b )then
print("Line 2 - a 不等於 b" )else
print("Line 2 - a 等於 b" )endif ( a < b )then
print("Line 3 - a 小於 b" )else
print("Line 3 - a 大於等於 b" )endif ( a > b ) then
print("Line 4 - a 大於 b" )else
print("Line 5 - a 小於等於 b" )end-- 修改 a 和 b 的值a = 5b = 20if ( a <= b ) then
print("Line 5 - a 小於等於 b" )endif ( b >= a ) then
print("Line 6 - b 大於等於 a" )end

以上程序執行結果為:

Line 1 - a 不等於 bLine 2 - a 不等於 bLine 3 - a 大於等於 bLine 4 - a 大於 bLine 5 - a 小於等於 bLine 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 = trueb = trueif ( a and b )then
print("a and b - 條件為 true" )endif ( a or b )then
print("a or b - 條件為 true" )endprint("---------分割線---------" )-- 修改 a 和 b 的值a = falseb = trueif ( a and b )then
print("a and b - 條件為 true" )else
print("a and b - 條件為 false" )endif ( not( a and b) )then
print("not( a and b) - 條件為 true" )else
print("not( a and b) - 條件為 false" )end

以上程序執行結果為:

a and b - 條件為 truea or b - 條件為 true---------分割線---------a and b - 條件為 falsenot( 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("菜鳥教程網址長度 ",#"www.runoob.com" )

以上程序執行結果為:

連接字元串 a 和 b Hello Worldb 字元串長度 5字元串 Test 長度 4菜鳥教程網址長度 14


運算符優先順序

從高到低的順序:

^not - (unary)* /+ -..< > <= >= ~= ==andor

除了^和..外所有的二元運算符都是左連接的。

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 = 20b = 10c = 15d = 5e = (a + b) * c / d;-- ( 30 * 15 ) / 5print("(a + b) * c / d 運算值為 :",e )e = ((a + b) * c) / d; -- (30 * 15 ) / 5print("((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.0a + (b * c) / d 運算值為 : 50.0

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

jQuery UI API 類別-特效(Effects)
Servlet 異常處理

TAG:程序員小新人學習 |