English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Lua 运算符

Ein Operator ist ein spezielles Symbol, das dem Interpreter sagt, welche spezifische mathematische oder logische Operation ausgeführt werden soll. Lua bietet folgende Arten von Operator:

  • Arithmetische Operator

  • Verknüpfungsoptionen

  • Logische Operatoren

  • Andere Operatoren

Arithmetische Operator

Die folgende Tabelle zeigt die häufig verwendeten arithmetischen Operator im Lua-Sprache, gesetzt der Wert von A ist10, der Wert von B ist 20:

OperatorBeschreibung示例
+AdditionA + B Ausgabeergebnis 30
-SubtraktionA - B Ausgabeergebnis -10
*MultiplikationA * B Ausgabeergebnis 200
/DivisionB / A w Ausgabeergebnis 2
%RestB % A Ausgabeergebnis 0
^PotenzA^2 Ausgabeergebnis 100
-Betragszeichen-A Ausgabeergebnis -10

在线示例

Wir können durch folgende Beispiele das Verständnis der Anwendung der arithmetischen Operator überdenken:

a = 21
b = 10
c = a + b
print("Zeile 1 - der Wert von c ist " , c )
c = a - b
print("Zeile 2 - der Wert von c ist " , c )
c = a * b
print("Zeile 3 - der Wert von c ist " , c )
c = a / b
print("Zeile 4 - der Wert von c ist " , c )
c = a % b
print("Zeile 5 - der Wert von c ist " , c )
c = a^2
print("Zeile 6 - der Wert von c ist " , c )
c = -a
print("Zeile 7 - der Wert von c ist " , c )

以上程序执行结果为:

Zeile 1 - der Wert von c ist     31
Zeile 2 - der Wert von c ist     11
Zeile 3 - der Wert von c ist     210
Zeile 4 - der Wert von c ist     2.1
Zeile 5 - der Wert von c ist     1
Zeile 6 - der Wert von c ist     441
Zeile 7 - der Wert von c ist     -21

Verknüpfungsoptionen

Die folgende Tabelle zeigt die häufig verwendeten Verknüpfungsoptionen im Lua-Sprache, gesetzt der Wert von A ist10, der Wert von B ist 20:

OperatorBeschreibung示例
==Gleich, überprüft, ob zwei Werte gleich sind, gleich gibt true zurück, sonst false(A == B) ist false.
~=Ungleich, überprüft, ob zwei Werte gleich sind, ungleich gibt true zurück, sonst false(A ~= B) ist true.
>Größer, gibt true zurück, wenn der linke Wert größer ist als der rechte Wert, sonst false(A > B) ist false.
<Kleiner, gibt false zurück, wenn der linke Wert größer ist als der rechte Wert, sonst true(A < B) ist true.
>=Größer oder gleich, gibt true zurück, wenn der linke Wert größer oder gleich dem rechten Wert ist, sonst false(A >= B) gibt false zurück.
<=Kleiner oder gleich, gibt true zurück, wenn der linke Wert kleiner oder gleich dem rechten Wert ist, sonst false(A <= B) gibt true zurück.

在线示例

Wir können durch folgende Beispiele das Verständnis der Anwendung der Verknüpfungsoperator überdenken:

a = 21
b = 10
if( a == b )
then
   print("Zeile 1 - a ist gleich b" )
else
   print("Zeile 1 - a ist ungleich b" )
end
if( a ~= b )
then
   print("Zeile 2 - a ist ungleich b" )
else
   print("Zeile 2 - a ist gleich b" )
end
if ( a < b )
then
   print("Zeile 3 - a ist kleiner als b)
else
   print("Zeile 3 - a ist größer als oder gleich b)
end
if ( a > b ) 
then
   print("Zeile 4 - a ist größer als b)
else
   print("Zeile 5 - a ist kleiner als oder gleich b)
end
-- Ändern Sie den Wert von a und b
a = 5
b = 20
if ( a <= b ) 
then
   print("Zeile 5 - a ist kleiner als oder gleich b)
end
if ( b >= a ) 
then
   print("Zeile 6 - b ist größer als oder gleich a)
end

以上程序执行结果为:

Zeile 1 - a unterscheidet sich von b
Zeile 2 - a unterscheidet sich von b
Zeile 3 - a ist größer als oder gleich b
Zeile 4 - a ist größer als b
Zeile 5 - a ist kleiner als oder gleich b
Zeile 6 - b ist größer als oder gleich a

Logische Operatoren

Die folgende Tabelle listet die häufig verwendeten logischen Operatoren in der Lua-Sprache auf, wobei A den Wert true und B den Wert false hat:

OperatorBeschreibung示例
andLogischer Undoperator. Gibt A zurück, wenn A false ist,否则返回 B.(A and B) ist false.
orLogischer Oderoperator. Gibt A zurück, wenn A true ist,否则返回 B.(A or B) ist true.
notLogischer Negationsoperator. Er gibt das Gegenteil des logischen Ergebnisses zurück, wenn die Bedingung true ist, dann ist der logische Negativoperator false.not(A and B) ist true.

在线示例

Wir können durch die folgenden Beispiele ein tieferes Verständnis für die Anwendung der logischen Operatoren gewinnen:

a = true
b = true
if ( a and b )
then
   print("a and b - Bedingung ist true)
end
if ( a or b )
then
   print("a or b - Bedingung ist true)
end
print("---------Trennlinie---------" )
-- Ändern Sie den Wert von a und b
a = false
b = true
if ( a and b )
then
   print("a and b - Bedingung ist true)
else
   print("a and b - Bedingung ist false)
end
if ( not( a and b) )
then
   print("not( a and b) - Bedingung ist true)
else
   print("not( a and b) - Bedingung ist false)
end

以上程序执行结果为:

a and b - Bedingung ist true
a or b - Bedingung ist true
---------Trennlinie---------
a and b - Bedingung ist false
not( a and b) - Bedingung ist true

Andere Operatoren

Die folgende Tabelle listet die Verknüpfungsoptionen und die Operatoren zur Berechnung der Länge von Tabellen oder Zeichenfolgen in der Lua-Sprache auf:

OperatorBeschreibung示例
..Verknüpfung zweier Zeichenfolgena..b ,wobei a "Hello " und b "World" sind, gibt das Ergebnis "Hello World" aus.
#Einzeiliger Operator, gibt die Länge einer Zeichenfolge oder Tabelle zurück.#"Hello" gibt zurück 5

在线示例

Wir können durch die folgenden Beispiele ein tieferes Verständnis für die Anwendung der Verknüpfungsoptionen und der Operatoren zur Berechnung der Länge von Tabellen oder Zeichenfolgen gewinnen:

a = "Hello "
b = "World"
print("连接字符串 a 和 b ", a..b )
print("b 字符串长度 ",#b )
print("字符串 Test 长度 ",#"Test" )
print("基础教程网网址长度 ",#"de.oldtoolbag.com"

以上程序执行结果为:

连接字符串 a 和 b Hello World
b 字符串长度     5
字符串 Test 长度     4
基础教程网网址长度     14

运算符优先级

从高到低的顺序:

^
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 = ((a + b) * c) / d; -- (30 * 15 ) / 5
print("((a + b) * c) / d 运算值为:
e = (a + b) * (c / d);-- (30) * (15/5)
print("(a + b) * (c / d) 运算值为:
e = a + (b * c) / d;  -- 20 + (150/5)
print("a + (b * c) / d 运算值为:

以上程序执行结果为:

(a + b) * c / d 运算值为:    90.0
((a + b) * c) / d 运算值为:    90.0
(a + b) * (c / d) 运算值为:    90.0
a + (b * c) / d 运算值为:    50.0