🔧 Modificadores de Tipos · signed, unsigned, short, long · C/C++

🔧 Modificadores de Tipos

"Modificadores de tipo são palavras-chave que alteram o tamanho, o intervalo de valores ou o comportamento de tipos primitivos em C e C++."

Os tipos primitivos em C/C++ podem ser refinados usando modificadores. Eles permitem ao programador ajustar o intervalo de valores (para tipos inteiros) ou a precisão (para ponto flutuante), otimizando o uso de memória e atendendo a requisitos específicos.

📌 Os Quatro Modificadores Principais

ModificadorEfeito
signedO tipo pode armazenar valores positivos, negativos e zero (padrão para a maioria dos tipos inteiros).
unsignedO tipo armazena apenas valores não-negativos (zero e positivos), dobrando o limite superior positivo.
shortReduz o tamanho do tipo (geralmente para 2 bytes em inteiros).
longAumenta o tamanho do tipo (4 ou 8 bytes, dependendo da plataforma).

🔢 Modificadores para Tipos Inteiros

Os modificadores podem ser combinados com int (e, em alguns casos, com char) para criar variações com diferentes tamanhos e intervalos.

Tamanhos e Intervalos Típicos (Plataforma 64 bits)

TipoTamanho (bytes)Intervalo (aproximado)
int4-2.147.483.648 a 2.147.483.647
unsigned int40 a 4.294.967.295
short ou short int2-32.768 a 32.767
unsigned short20 a 65.535
long ou long int4 ou 8*Pelo menos -2.147.483.648 a 2.147.483.647
unsigned long4 ou 8*Pelo menos 0 a 4.294.967.295
long long (C++11)8-9.22e18 a 9.22e18
unsigned long long80 a 1.84e19

* Depende da plataforma: em Windows (LLP64), long é 4 bytes; em Linux/Mac (LP64), long é 8 bytes.

Exemplos de Declaração

signed int temperatura = -10; // 'signed' é redundante (padrão) unsigned int idade = 25; // Apenas valores não-negativos short int ano = 2024; // Ocupa menos memória long int populacao = 7800000000L; // Suporte a números maiores unsigned short portas = 65535; // Máximo para unsigned short long long distancia = 9460730472580800LL; // Um ano-luz em metros
⚠️ Cuidado com Overflow! Atribuir um valor fora do intervalo permitido causa overflow (estouro), resultando em comportamento indefinido ou valores incorretos.
unsigned short x = 65535; x = x + 1; // x se torna 0 (wrap-around) signed short y = 32767; y = y + 1; // y se torna -32768 (comportamento definido pela implementação)

📝 Modificador com char

O tipo char pode ser signed ou unsigned, dependendo da implementação. Para garantir portabilidade, especifique explicitamente quando necessário.

char c1 = 'A'; // Pode ser signed ou unsigned signed char c2 = -128; // Garantidamente signed (-128 a 127) unsigned char c3 = 255; // Garantidamente unsigned (0 a 255)

📏 Modificadores para Ponto Flutuante

Apenas long pode ser aplicado a double para aumentar a precisão.

TipoTamanho (bytes)Precisão (dígitos significativos)
float4~7
double8~15
long double8, 12 ou 16*~18 ou mais

* Depende do compilador e plataforma.

float f = 3.14159f; double d = 2.718281828459045; long double ld = 1.4142135623730950488L;

🏷️ Combinando com typedef/using

Modificadores podem ser usados em conjunto com aliases de tipos para criar nomes mais expressivos.

typedef unsigned int uint; typedef unsigned short ushort; typedef unsigned long long ullong; // Em C++ moderno using uchar = unsigned char; using uint32 = unsigned int; // Assumindo int de 32 bits uint idade = 30; ushort ano = 2024; uchar byte = 0xFF;

📊 Resumo Visual

Tipo BaseModificadores VálidosExemplo
intsigned, unsigned, short, long, long longunsigned long long int
charsigned, unsignedunsigned char
doublelonglong double

🔗 Conclusão

Os modificadores de tipo são ferramentas essenciais para o controle fino de memória e intervalos de valores em C/C++. Eles permitem que o programador escolha o tipo mais adequado para cada situação, evitando desperdício de memória ou limitações inesperadas. Ao trabalhar com grandes volumes de dados ou sistemas embarcados, a escolha correta dos modificadores pode fazer uma diferença significativa no desempenho e na correção do programa.

⏭️ Próximo: Interna... (Especificadores de Armazenamento/Storage Classes)

Postar um comentário

0 Comentários