Opérateurs Lua

Les opérateurs sont des symboles spéciaux qui indiquent à l'interpréteur d'effectuer des opérations mathématiques ou logiques spécifiques. Lua fournit les types d'opérateurs suivants :

  • Opérateurs arithmétiques
  • Opérateurs relationnels
  • Opérateurs logiques
  • Autres opérateurs

Opérateurs arithmétiques

Le tableau suivant répertorie les opérateurs arithmétiques courants du langage Lua. Supposons que la valeur de A est 10 et que la valeur de B est 20 :

OperatorDescriptionExemple
+AdditionA + B donne 30
-SoustractionA - B donne -10
*MultiplicationA * B donne 200
/DivisionB / A donne 2
%ModuloB % A donne 0
^ExponentiationA^2 donne 100
-Signe négatif-A donne -10
//Opérateur de division entière (>=lua5.3) 5//2Donne 2

Exemples

Nous pouvons mieux comprendre l'application des opérateurs arithmétiques à travers les exemples suivants :

Exemples

a = 21
b = 10
c = a + b
print("Ligne 1 - La valeur de c est ", c )
c = a - b
print("Ligne 2 - La valeur de c est ", c )
c = a * b
print("Ligne 3 - La valeur de c est ", c )
c = a / b
print("Ligne 4 - La valeur de c est ", c )
c = a % b
print("Ligne 5 - La valeur de c est ", c )
c = a^2
print("Ligne 6 - La valeur de c est ", c )
c = -a
print("Ligne 7 - La valeur de c est ", c )

La sortie du programme ci-dessus est :

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

En Lua,// est utilisé pour les opérations de division, et le résultat du calcul inclut la partie décimale.//// est utilisé pour les opérations de division entière, et le résultat du calcul n'inclut pas la partie décimale :

Exemples

a = 5
b = 2

print("Opération de division - La valeur de a/b est ", a / b )
print("Opération de division entière - La valeur de a//b est ", a // b )

La sortie du programme ci-dessus est :

除法运算 - a/b 的值为   2.5
整除运算 - a//b 的值为  2

Opérateurs relationnels

Le tableau suivant répertorie les opérateurs relationnels courants du langage Lua. Supposons que la valeur de A soit 10 et la valeur de B soit 20 :

OperatorDescriptionExemple
==Égal à, vérifie si deux valeurs sont égales. Si elles sont égales, renvoie true ; sinon, renvoie false.(A == B) est faux.
~=Différent de, vérifie si deux valeurs sont égales. Si elles ne sont pas égales, renvoie true ; sinon, renvoie false.(A ~= B) est vrai.
>Supérieur à, si la valeur de gauche est supérieure à la valeur de droite, renvoie true ; sinon, renvoie false.(A > B) est faux.
<Inférieur à, si la valeur de gauche est supérieure à la valeur de droite, renvoie false ; sinon, renvoie true.(A < B) est vraie.
>=Supérieur ou égal à, si la valeur de gauche est supérieure ou égale à la valeur de droite, renvoie true ; sinon, renvoie false.(A >= B) renvoie false.
<=Inférieur ou égal à, si la valeur de gauche est inférieure ou égale à la valeur de droite, renvoie true ; sinon, renvoie false.(A <= B) renvoie true.

Exemples

Nous pouvons mieux comprendre l'application des opérateurs relationnels à travers les exemples suivants :

Exemples

a = 21
b = 10

if( a == b )
puis
   print("Ligne 1 - a est égal à b" )
else
   print("Ligne 1 - a n'est pas égal à b" )
end

if( a ~= b )
puis
   print("Ligne 2 - a n'est pas égal à b" )
else
   print("Ligne 2 - a est égal à b" )
end

if ( a < b )
puis
   print("Ligne 3 - a est inférieur à b" )
else
   print("Ligne 3 - a est supérieur ou égal à b" )
end

if ( a > b )
puis
   print("Ligne 4 - a est supérieur à b" )
else
   print("Ligne 5 - a est inférieur ou égal à b" )
end

-- Modifiez les valeurs de a et b
a = 5
b = 20
if ( a <= b )
puis
   print("Ligne 5 - a est inférieur ou égal à b" )
end

if ( b >= a )
puis
   print("Ligne 6 - b est supérieur ou égal à a" )
end

La sortie du programme ci-dessus est :

Line 1 - a 不等于 b
Line 2 - a 不等于 b
Line 3 - a 大于等于 b
Line 4 - a 大于 b
Line 5 - a 小于等于  b
Line 6 - b 大于等于 a

Opérateurs logiques

Le tableau suivant répertorie les opérateurs logiques courants du langage Lua. Supposons que la valeur de A soit vraie et que la valeur de B soit fausse :

OperatorDescriptionExemple
etOpérateur ET logique. Si A est faux, renvoie A ; sinon, renvoie B.(A and B) est faux.
ouOpérateur OU logique. Si A est vrai, renvoie A ; sinon, renvoie B.(A or B) est vrai.
notOpérateur NON logique. Il est l'opposé du résultat de l'opération logique. Si la condition est vraie, le NON logique est faux.not(A and B) est vrai.

Exemples

Nous pouvons mieux comprendre l'application des opérateurs logiques à travers les exemples suivants :

Exemples

a = vrai
b = vrai

if ( a and b )
puis
   print("a and b - La condition est vraie" )
end

if ( a or b )
puis
   print("a or b - La condition est vraie" )
end

print("---------Séparateur---------" )

-- Modifiez les valeurs de a et b
a = false
b = vrai

if ( a and b )
puis
   print("a and b - La condition est vraie" )
else
   print("a and b - La condition est fausse" )
end

if ( not( a and b) )
puis
   print("not( a and b) - La condition est vraie" )
else
   print("not( a and b) - La condition est fausse" )
end

La sortie du programme ci-dessus est :

a and b - 条件为 true
a or b - 条件为 true
---------分割线---------
a and b - 条件为 false
not( a and b) - 条件为 true

Autres opérateurs

Le tableau suivant répertorie les opérateurs de concaténation et les opérateurs permettant de calculer la longueur des tables ou des chaînes dans le langage Lua :

OperatorDescriptionExemple
..Concatène deux chaînesa..b, où a est "Hello " et b est "World", le résultat de sortie est "Hello World".
#Opérateur unaire qui renvoie la longueur d'une chaîne ou d'une table.#"Hello" renvoie 5

Exemples

Nous pouvons mieux comprendre l'application des opérateurs de concaténation et des opérateurs de calcul de la longueur des tables ou des chaînes grâce aux exemples suivants :

Exemples

a = "Hello "
b = "World"

print("Concaténer les chaînes a et b ", a..b )

print("La longueur de la chaîne b ",#b )

print("La longueur de la chaîne Test ",#"Test" )

print("La longueur de l'URL du site de tutoriel Example ",#"www.example.com" )

La sortie du programme ci-dessus est :

连接字符串 a 和 b     Hello World
b 字符串长度     5
字符串 Test 长度     4
Example网址长度     14

Précédence des opérateurs

De la plus haute à la plus basse :

^
not    - (unary)
*      /       %
+      -
..
<      >      <=     >=     ~=     ==
and
or

À l'exception de^et.., tous les autres opérateurs binaires sont associatifs à gauche.

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)

Exemples

Nous pouvons mieux comprendre la précédence des opérateurs du langage Lua grâce aux exemples suivants :

Exemples

a = 20
b = 10
c = 15
d = 5

e = (a + b) * c / d;-- ( 30 * 15 ) / 5
print("la valeur de l'opération (a + b) * c / d est :",e )

e = ((a + b) * c) / d; -- (30 * 15 ) / 5
print("la valeur de l'opération ((a + b) * c) / d est :",e )

e = (a + b) * (c / d);-- (30) * (15/5)
print("La valeur de l'opération (a + b) * (c / d) est :",e )

e = a + (b * c) / d;  -- 20 + (150/5)
print("La valeur de l'opération a + (b * c) / d est :",e )

La sortie du programme ci-dessus est :

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