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.