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 輸出結果 -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。
~=不等於,檢測兩個值是否相等,不相等返回 true,否則返回 false(a ~= b) 為 true。
>大於,如果左邊的值大於右邊的值,返回 true,否則返回 false(a > b) 為 false。
>=大於等於,如果左邊的值大於等於右邊的值,返回 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" )
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 = 5
b = 20
if ( a <= b )
then
print("line 5 - a 小於等於 b" )
endif ( 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" )
endif ( a or b )
then
print("a or b - 條件為 true" )
endprint("---------分割線---------" )
-- 修改 a 和 b 的值
a = false
b = true
if ( 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 - 條件為 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("菜鳥教程**長度 ",#"www.runoob.com" )
以上程式執行結果為:
連線字串 a 和 b hello world
b 字串長度 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 = 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
Lua(七) 運算子
注意lua中沒有 這些運算子 加 減 乘 除 餘 冪 負lua中沒有float,double等型別,所有數字都是number型別,所以計算所得數字是多少就是多少 lua中 只能用作數字計算,不能用作字串連線 等於 不等於 大於等於 小於等於 大於 and 邏輯與 or 邏輯或 not 邏輯非 lua...
Lua 運算子相關
運算子1.算數運算子 冪 2.關係雲演算法 不等於 3.邏輯運算子 and 與 等於 都為true or 或 等於 有乙個為true,則true not 非 等於 a為true,not a 則取反 為 false x,y 2,4s x y print s s x y print s s x y pr...
Lua學習 運算子
運算子分為 1.算術運算子 2.條件運算子 3.邏輯運算子 4.位運算子 5.三元運算子 在lua中不支援位運算子和三位運算子,但是可以間接實現三元運算子 1.算術運算子 冪運算子 注意 lua中沒有 2.條件運算子 and or,not 注意 lua中的條件運算子就這三個,沒有 3.邏輯運算子 注...