Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Modificadores sinalização
  2. Modificadores de tamanho
  3. Tabela de modificadores
  4. Renomear tipos com typedef

C++ possui modificadores de sinalização que podem ser utilizados em conjunto com os tipos de dados já estudados. Com esses modificadores, podemos aumentar a faixa de valores aceita por cada tipo e sua sinalização.

Esse modificador é padrão para os tipos char e int. Seu objetivo é fazer com que um tipo de dado tenha sua representação numérica com sinalização positiva/negativa. Essa sinalização é feita com a utilização do bit mais significativo com sinal.

Tab. 1: Exemplo de sinalização
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
- - - - - - - -

Quando um modificador de sinalização é utilizado, internamente, caso o valor no bit 7 seja 0, o número em questão é positivo, caso contrário, o número é negativo.

Sintaxe
signed tipo_numerico nome_variavel;
Onde
tipo_numerico: tipo int e char
Exemplo 1
#include <iostream>
using namespace std;

int main() {
    
    signed int a = 100;
    signed char b = 'A';
    cout << a;

    return 0;
}

A faixa de valores suportados na variável declarada no exemplo acima é de -128 até 127. Essa faixa de valores já mencionada ao ser discutido sobre o tipo char.

O modificador signed é utilizado por padrão não sendo necessário a sua informação no momento da declaração de variáveis.

Exemplo 2
#include <iostream>
using namespace std;

void main(void)
{
    signed int a = 100;
    signed char b = 'A';
    cout << a;
}

O modificador unsigned, em contrapartida ao modificador signed, não utiliza sinalização. Seu objetivo é fazer com que um tipo de dado que utilize o unsigned tenha sua representação numérica sempre seja positiva.

Sintaxe
unsigned tipo_de_dado nome_variavel;
Exemplo 3
#include <iostream>
using namespace std;

void main(void)
{
    unsigned char b = 'A';
    cout << b;
}

A faixa de valores suportados na variável declarada no exemplo acima é de 0 até 255. Essa faixa de valores já havia sido mencionada anteriormente ao ser discutido sobre o tipo char.

A linguagem C++ possui modificadores de tamanho que podem ser utilizados em conjunto com os tipos de dados já estudados. Com esse modificadores podemos aumentar ou diminuir o tamanho em bytes de armazenamento de informações do tipos de dados.

O modificador short tem o objetivo de reduzir a capacidade de armazenados de um int quando utilizado. Quando aplicado, o tamanho do dado armazenado é reduzido de 4 bytes(32-bits) para 2 bytes(16-bits) e a faixa de valores é de -32768 até 32767.

Quando short é utilizado na declaração de um int em conjunto com o modificador unsigned, essa faixa de valor mencionada é de 0 a 65535.

Sintaxe
short tipo_int nome_variavel;
Exemplo 4
#include <iostream>
using namespace std;

void main(void)
{
    unsigned short int a = 65535;
    cout << a;
}

É importante mencionar que o modificador short não pode ser utilizado com os tipos double e float, sendo apenas utilizado em conjunto com o tipo int.

O modificador long, tem como objetivo de aumentar o tamanho de um dado que foi definido como int. Quando aplicado, a capacidade de armazenamento é aumentado de 4 bytes(32-bits) para 8 bytes(64-bits) e a faixa de valores é de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807.

Quando long é utilizado na declaração de um int, por exemplo, em conjunto com o modificador unsigned, essa faixa de valor mencionada é de 0 até 18.446.744.073.709.551.615.

Sintaxe
long tipo_numerico nome_variavel;
Onde
tipo_numerico: tipo int e double
Exemplo 5
#include <iostream>
using namespace std;

void main(void)
{
    long int a = 9223372036854775807;
    cout << a;
}

É importante mencionar que o modificador long não pode ser utilizado com os tipos float e char, sendo apenas utilizado em conjunto com os tipos int e double.

Abaixo uma tabela resumo do uso dos modificadores signed, unsigend, short e long como os tipos de dados mencionados nos exemplos anteriores.

Tab. 1: Intervalos de dados
Tipo dados Tamanho(Bytes) Intervalo de valores
signed char 1 -128 a 127
unsigned char 1 0 a 255
signed int 4 -2.147.483.648 a 2.147.483.647
unsigned int 4 0 a 4.294.967.295
signed short int/short int 2 -32.768 a 32.7675
unsigned short int 2 0 a 65.535
signed long int/long int 8 -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
unsigned long int 8 0 a 18.446.744.073.709.551.615
double - -

A linguagem C++, assim como C, nos permite nomear os tipos de dados já existentes de forma, por exemplo, reduzida.

Exemplo
unsigned int nome_variavel;

Com a sintaxe de acima, todas as vezes que precisarmos declarar variáveis de um mesmo tipo temos que digitar "unsigned int".

C++ possui um recurso que nos possibilita alterar a declaração de um tipo de dados para que tenha um apelido. Assim podemos escrever menos quando declararmos nossas variáveis.

Exemplo
uint nome_variavel;

Para nomear um tipo de dado como mencionado acima, a linguagem C++ fornece o operador typedef:

Sintaxe
typedef tipo_de_dado_origem nome_novo_tipo_dado;
Exemplo 8
#include <iostream>
using namespace std;

typedef unsigned int uint;

int main() {
    
    uint a = 65535;
    cout << a;
    return 0;
}
  1. 28/07/2025 - revisão 3 - Ajustes em sintaxes; Correções pontuais
  2. 30/09/2024 - revisão 2 - Correção: sintaxe 'short', ajustes pontuais
  3. 09/02/2024 - revisão 1 - Correção em navegação, exemplos e erros gramaticais
  4. 30/06/2023 - versão inicial