Expressões e operadores
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 é recomendada a leitura.
Nesta parte do tutorial vamos estudar os operadores fornecidos pela linguagem Lua.
Objetivos
Operadores de atribuição
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 |
Sintaxe
nome_variave = valor
nome_variave1 = expressao
nome_variave1 = nome_variavel2
Exemplo 1
local x = 10
local y = 0
print(x,y)
x = y
print(x,y)
Saída
10 0
0 0
Diferente de outras linguagens como C/++, C#, Java e outras, 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:
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
nome_variavel1 operador nome_variavel2
nome_variavel1 operador valor
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 unários (--) e (++) em outras linguagens
como C/C++, C#, Java e outras.
Os seguintes operadores relacionais estão disponíveis na linguagem Lua. Os operadores abaixo
retornam valores true ou false. 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
nome_variavel1 operador nome_variavel2
nome_variavel1 operador valor
expressao1 operador expressao2
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: and e or
nome_variavel1 operador nome_variavel2
expressao1 operador expressao2
nome_variavel operador valor
Sintaxe: not
operador valor
operador nome_variavel
operador expressao
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
Operadores bit-a-bit/bitwise
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: & e |
nome_variavel1 operador nome_variavel2
nome_variavel operador valor
Sintaxe: >> e <<
nome_variavel operador bits_deslocamento ( valor, variavel ou expressao )
Sintaxe: ~
operador expressao
operador valor
operador nome_variavel
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. Mais operadores serão adicionados em futuras atualizações deste tutorial.
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] --indice zero |
Exemplo 6
local x = "Uma string "
local y = "lunática"
local z = x..y
local w = #z
Saída
Uma string lunática
20
Precedência de operadores
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 # - ~
^
Histórico de atualizações
- 15/09/2025 - revisão 3 - Ajustes: pontuais, sintaxes, target de links internos e Ex. 1
- 12/09/2024 - revisão 2 - Correção em links Portugol e outros pequenos ajustes gramaticais
- 03/10/2023 - revisão 1 - Correção em referências e erros gramaticais
- 26/05/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.