Para declararmos expressões em qualquer linguagem de programação precisamos utilizar os operadores. Os conceitos de expressões e operadores já foram vistos em Tutorial Portugol: Operadores e Tutorial C: Operadores. Em caso de dúvida é recomendado a leitura.

Nesta parte do tutorial vamos estudar os operadores fornecidos pela linguagem Lua.

Os seguintes operadores de atribuição estão disponível na linguagem Lua:

Tab. 1: Operadores de Atribuição
Operador Significado Exemplo
= Atribuição a = b
Exemplo 1
local x = 10
local y = 0
x = y
Saída
10
0

Diferente dos operadores utilizados na linguagem C, Lua não possui os operadores acumulativos +=, -= e etc.

Operadores aritméticos foram visto em Portugol. Os seguintes operadores aritméticos estão disponível na linguagem Lua:

Operadores aritméticos foram visto em Tutorial Portugol: Operadores relacionais. A leitura é recomendada em caso de dúvida.

Tab. 2: Operadores de Aritméticos
Operador Significado Exemplo
+ Adição a+b
- Subtração a-b
* Multiplicação a*b
/ Divisão a/b
// Divisão inteira a//b
% Módulo a%b
^ Divisão a/b
- Unário de negação -a
Sintaxe
valor1 operador valor2
Exemplo 2
local x = 4
local y = 2
local z = 0

z = x&y 
print(z)
z = x|y 
print(z)
z = x>>y 
print(z)
z = x<<y 
print(z)
z = ~x
print(z)
Saída
0
6
1
16
-5

Lua não possui os operadores de incremento e decremento -- e ++ como em outras linguagens com C/C++ e Java.

Os seguintes operadores relacionais estão disponíveis na linguagem Lua. Os operadores abaixo retornam valores true ou false. Os operadores relacionais podem ser vistos em Tutorial Portugol: Operadores aritméticos como funcionam.

Tab. 3: Operadores Relacionais
Operador Significado Exemplo
== Igual a == b
>= Maior ou igual a >= b
<= Maior ou igual a <= b
~= Diferente a ~=b
// Maior a>b
< Menor a<b
Sintaxe
valor1 operador valor2
Exemplo 3
local x = 40 
local y = 20
local z = 0

z = x == y 
print(z)
z = x >= y 
print(z)
z = x <= y 
print(z)
z = x > y 
print(z)
z = x < y 
print(z)
z = x~=y 
print(z)
Saída
false
true
false
true
false
true

Os seguintes operadores lógicos estão disponíveis na linguagem Lua. Os operadores abaixo retornam valores true ou false. Operadores e tabelas verdades foram visto em Tutorial Portugol: Operadores Lógicos.

Tab. 4: Operadores Lógicos
Operador Significado Exemplo
and E lógico a and b
not Não lógico not a
or OR lógico a or b
Sintaxe
valor1 operador valor2
Exemplo 4
local x = true
local y = false

z = x and y
print(z)
z = x or y 
print(z)
z = not y 
print(z) 
Saída
false
true
true

Os seguintes operadores bit-a-bit estão disponíveis na linguagem Lua. Esse operadores aplicam operações em cada bit de um valor resultando em 0 ou 1. O funcionamento básico pode ser visto em Tutorail C: Operadores bit-a-bit sendo a leitura recomendada.

Tab. 5: Operadores bit-a-bit
Operador Significado Exemplo
& E bit-a-bit a & b
| OR bit-a-bit a | b
~ Não bit-a-bit ~a
>> Desloca N bits à direita a>>b
<< Desloca N bits à esquerda a<<b
Sintaxe
valor1 operador valor2
Exemplo 5
local x = 4
local y = 2
local z = 0

z = x&y 
print(z)
z = x|y 
print(z)
z = x>>y
print(z)
z = x<<y
print(z)
z = ~x
print(z) 
Saída
0
6
1
16
-5

Abaixo a tabela contendo outros registradores que não se encaixam nos grupos de operadores estudados anteriormente.

Tab. 6: Outros operadores
Operador Significado Exemplo
.. Concatenação de string a..b
# Retorna tamanho de string ou vetor #a
[] Indexador de vetor/matriz v[1]
Exemplo 6
local x = "Uma string "
local y = "lunática"
local z = x..y
local w = #z
Saída
Uma string lunática
20

Mais operadores serão adicionados em futuras atualizações deste tutorial.

Os operadores estudados acima possuem um precedência para a validação quando contidos em uma expressão. A lista de precedência de operadores abaixo foi ordenada da menor prioridade até a maior prioridade.

or
and
<     >     <=    >=    ~=    ==
|
~
&
<<    >>
..
+     -
*     /     //    %
not   #     -     ~
^
  1. 12/09/2024 - revisão 2 - Correção em links Portugol e outros pequenos ajustes gramaticais
  2. 03/10/2023 - revisão 1 - Correção em referências e erros gramaticais
  3. 26/05/2023 - versão inicial