Tipos de dados em Solidity: inteiros com sinal (int) e sem sinal (uint)
Escrito por Turja
Solidity é uma linguagem de alto nível, orientada a objetos e com tipagem estática, usada por desenvolvedores para implantar aplicações na blockchain Ethereum. Por ser uma linguagem com tipagem estática, Solidity exige que o desenvolvedor defina a estrutura e o tipo de dado de cada variável de estado e local em tempo de compilação.
Por isso, os tipos de dados em Solidity são essenciais para entender ao aprender contratos inteligentes em Solidity. Os tipos de dados classificam as informações armazenadas em variáveis em diferentes categorias, como inteiros, booleanos, endereços, literais, arrays, entre outras.
Este artigo define o que são os tipos de dados em Solidity e detalha os tipos de inteiros mais comuns, como uint e int.
O que são tipos de dados em Solidity?
Assim como em outras linguagens com tipagem estática, os tipos de dados em Solidity especificam a informação armazenada em uma variável, seja um valor específico ou um endereço de referência para um local na memória.
Os tipos de dados em Solidity são flexíveis, pois é possível combinar tipos elementares para formar tipos complexos, como arrays de inteiros ou estruturas com variáveis de tipos diferentes.
No entanto, uma das principais restrições em Solidity é que o desenvolvedor precisa especificar o tipo de dado de cada variável em tempo de compilação. Uma vez declarado, o compilador sabe exatamente quanto espaço precisa reservar para a variável.
Os tipos de dados em Solidity podem ser divididos, de forma geral, em dois grupos principais: value types e reference types.
O que são value types?
Os value types em Solidity, como os inteiros, são variáveis que armazenam dados dentro de um espaço de memória definido e passam um valor duplicado quando usadas em uma função ou atribuição. Esse value type armazena uma cópia separada do dado duplicado, de modo que qualquer alteração no valor da cópia não altera o value type original.
Solidity possui oito value types: inteiros com ou sem sinal, booleanos, números de ponto fixo, endereços, arrays de bytes, literais, enums e tipos de contrato e função. Aqui está um resumo rápido do que cada um representa:
- Inteiros com/sem sinal - Os tipos de dados inteiros armazenam números inteiros, sendo que inteiros com sinal armazenam valores positivos e negativos, e inteiros sem sinal armazenam apenas valores não negativos.
- Booleanos - O tipo de dado booleano é declarado com a palavra-chave bool e pode conter apenas dois valores constantes possíveis, true ou false.
- Números de ponto fixo - Os números de ponto fixo representam números decimais em Solidity, embora ainda não sejam totalmente suportados pela Ethereum virtual machine.
- Endereços - O tipo address é usado para armazenar endereços de carteiras Ethereum ou de contratos inteligentes, com cerca de 20 bytes. Um tipo address pode receber o sufixo "payable", que o restringe a armazenar apenas endereços de carteira e usar as funções transfer e send de criptomoedas.
- Arrays de bytes - Os arrays de bytes, declarados com a palavra-chave "bytes", são arrays de tamanho fixo usados para armazenar um número predefinido de bytes, até 32, geralmente declarados junto com a palavra-chave (bytes1, bytes2).
- Literais - Literais são valores imutáveis, como endereços, racionais e inteiros, strings, unicode e hexadecimais, que podem ser armazenados em uma variável.
- Enums - Enums, abreviação de Enumerable, são um tipo de dado definido pelo usuário que restringe o valor da variável a um conjunto específico de constantes definidas dentro do programa.
- Contract & Function Types - Assim como em outras linguagens orientadas a objetos, os tipos de contrato e função são usados para representar classes e suas respectivas funções. Contratos contêm funções que podem modificar as variáveis de estado do contrato.
O que são reference types?
Os reference types em Solidity, como os arrays fixos e dinâmicos, são variáveis que apontam para o endereço de memória de um dado armazenado. Diferentemente dos value types, os reference types não armazenam nenhum valor, mas servem como um localizador do dado pretendido. Os reference types se dividem principalmente em quatro tipos:
- Arrays fixos - Arrays fixos são arrays com um tamanho predefinido em tempo de execução, declarado durante a inicialização.
- Arrays dinâmicos - Arrays dinâmicos são usados para alocar tamanho dinamicamente em tempo de execução, dependendo dos dados que o programa precisa armazenar.
- Structs - Structs em Solidity são um tipo de dado complexo que permite criar um tipo personalizado contendo membros de outros tipos, geralmente usado para agrupar dados relacionados.
- Mappings - Mappings armazenam dados em pares chave-valor, de forma semelhante aos dicionários em outras linguagens orientadas a objetos, sendo a chave um tipo de dado de valor, e o valor podendo ser de qualquer tipo.
O que é um inteiro com sinal (int)?
Um inteiro com sinal é um value type declarado com a palavra-chave int, usado para armazenar valores inteiros positivos ou negativos, no intervalo de -2 elevado a 255 até 2 elevado a 255 menos 1.
Tamanhos de inteiros em Solidity
A palavra-chave int funciona como abreviação para int256, um valor de dado inteiro que pode armazenar até 256 bits de inteiro ou unidades de dados. Esse value type também pode ser especificado em valores menores, em incrementos de 8, como int8, int16, int32, int64, int128 e int256. Os desenvolvedores podem usar tamanhos menores, como int8, int16, int32 ou int64, caso queiram restringir o tamanho da variável e otimizar o desempenho.
O que é um inteiro sem sinal (uint)?
Um inteiro sem sinal é um value type declarado com a palavra-chave uint, que armazena um valor inteiro igual ou maior que zero, no intervalo de 0 a 2 elevado a 255 menos 1.
Tamanhos de dados uint
Assim como no inteiro com sinal, a palavra-chave uint funciona como abreviação para uint256, um valor de dado inteiro sem sinal que pode armazenar até 256 bits de inteiro ou unidades de dados.
Um value type de inteiro sem sinal também pode ser especificado em valores menores, em incrementos de 8, a partir de um mínimo de uint8 até um máximo de uint256. As denominações são uint8, uint16, uint32, uint64, uint128 e uint256.
Qual é a diferença entre inteiros com sinal e sem sinal?
A principal diferença entre inteiros com sinal e sem sinal é que os inteiros com sinal podem armazenar valores positivos e negativos, enquanto os inteiros sem sinal podem armazenar apenas valores não negativos. Assim, embora ambos sejam value types, os inteiros sem sinal têm uma restrição no intervalo de valores que podem armazenar.
Em contratos inteligentes, essa diferença exige que o desenvolvedor priorize o valor armazenado no tipo de dado para evitar erros.
Qual é a diferença entre uint e uint256?
Tanto uint quanto uint256 compartilham a mesma definição, pois são aliases, mas ao declarar explicitamente o tamanho do inteiro, o uint256 segue as boas práticas de criação de contratos inteligentes, melhorando a legibilidade e a consistência do código.
Fora isso, não há diferença entre as palavras-chave uint e uint256. A distinção fica a critério do desenvolvedor, que escolhe usar uma ou outra para dar mais detalhes ao código.
Comece a usar inteiros com e sem sinal (uint) em seus contratos inteligentes
Usar os tipos de dados corretos em Solidity é fundamental para desenvolver contratos inteligentes eficientes e legíveis. Esses tipos de dados ajudam o compilador a entender a quantidade e o tipo de memória que precisa alocar para variáveis específicas, como inteiros ou arrays. Alocar espaço na blockchain consome gas, então é importante ter cuidado ao declarar o tamanho e o tipo das suas variáveis.
Se você quiser continuar aprendendo sobre Solidity e seus recursos, garanta sua vaga no Bootcamp de Desenvolvedor Ethereum de 7 semanas da Alchemy University.
Visões gerais relacionadas
Solidity3 de dezembro de 2025
As 6 melhores IDEs de Solidity para desenvolvedores (2026)
Conheça as melhores IDEs para desenvolvimento em Solidity.
Solidity19 de novembro de 2025
Otimização de gas em Solidity: 12 técnicas para deixar seus smart contracts mais baratos e eficientes
Quer escrever código melhor e reduzir suas taxas de gas?
Solidity13 de novembro de 2025
12 boas práticas de segurança para smart contracts em Solidity
Proteja seus smart contracts com essas dicas e ferramentas de segurança de especialistas.

Construa magia blockchain
A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.