Modificadores de tipo C ++: curto, longo, assinado e não assinado

Neste tutorial, aprenderemos sobre modificadores de tipo e como usá-los na programação C ++ com a ajuda de exemplos.

Na programação C ++, os modificadores de tipo são usados ​​para alterar o significado dos tipos de dados fundamentais.

Existem quatro modificadores de tipo em C ++.

  • short
  • long
  • signed
  • unsigned

Aqui está um breve resumo:

Tipo de dados Tamanho (em bytes) Significado
signed int 4 usado para inteiros (equivalente a int)
unsigned int 4 só pode armazenar inteiros não negativos
short 2 usado para números inteiros pequenos (intervalo -32768 a 32767 )
long pelo menos 4 usado para números inteiros grandes (equivalente a long int)
unsigned long 4 usado para números inteiros positivos grandes ou 0 (equivalente a unsigned long int)
long long 8 usado para números inteiros muito grandes (equivalente a long long int).
unsigned long long 8 usado para inteiros positivos muito grandes ou 0 (equivalente a unsigned long long int)
long double 8 usado para grandes números de ponto flutuante
signed char 1 usado para caracteres (intervalo garantido -127 a 127 )
unsigned char 1 usado para caracteres (intervalo de 0 a 255 )

Modificador de tipo curto

Podemos usar shortpara pequenos inteiros (na faixa −32,767de +32,767).

Por exemplo,

 // small integer short a = 12345;

Aqui, a é uma shortvariável inteira.

Nota: short é equivalente a short int.

Modificador de tipo longo

Se precisarmos armazenar um número inteiro grande (no intervalo de -2147483647 a 2147483647), podemos usar o especificador de tipo long. Por exemplo,

 // large integer long b = 123456;

Nota: long é equivalente a long int.

O modificador de tipo longo também pode ser usado com doublevariáveis.

 // large floating-point number long double c = 0.333333333333333333L;

Nota: Para indicar long double, usamos o Lsufixo. Se não usarmos o sufixo L, é um doublevalor que é convertido para long double(o que pode resultar em perda de dados).

longo longo

longpode ser repetido duas vezes para criar o long longtipo. Esse tipo é usado para números ainda maiores do que long. long longo modificador de tipo só pode ser usado com int.

Por exemplo,

 // long long int long long num = 12345678;

Modificadores assinados e não assinados

Variáveis ​​com sinal podem conter inteiros positivos e negativos, incluindo zero . Por exemplo,

 // positive valued integer signed int x = 23; // negative valued integer signed int y = -13; // zero-valued integer signed int z = 0;

Aqui,

  • x contém um número inteiro de valor positivo
  • y contém um número inteiro de valor negativo
  • z contém um número inteiro de valor zero

Nota:

  • Por padrão, os inteiros são signed. Portanto, em vez de signed int, podemos usar diretamente int.
  • signed e unsigned só podem ser usados ​​com os tipos int e char.

As variáveis ​​sem sinal podem conter apenas valores inteiros não negativos. Por exemplo,

 // positive valued integer unsigned int x = 2; unsigned int y = 0;

Aqui,

  • x contém um número inteiro de valor positivo
  • y tem zero

Em geral, uma intvariável pode armazenar uma faixa de valores de -2.147.483.648 a 2.147.483.647 . Enquanto uma unsigned invariável t pode armazenar uma faixa de valores de 0 a 4.294.967.295 .

assinado, não assinado e char simples

C ++ tem 3 tipos diferentes: carvão animal char, signed chare unsigned char. Na prática, existem basicamente apenas 2 tipos: signed chare unsigned char.

Isso ocorre porque, embora charnão seja igual signed charou unsigned charno C ++ padrão, diferentes compiladores tratam charcomo um signed charou de unsigned characordo com sua preferência.

Observação: quando usamos apenas em charvez de signed charou unsigned char, esse tipo é conhecido como char simples .

Como você deve ter adivinhado, signed charpode armazenar inteiros positivos e negativos, enquanto unsigned charsó pode armazenar inteiros positivos (incluindo 0 ).

O intervalo garantido de valores inteiros que signed charpodem ser armazenados é de -127 a 127, enquanto o intervalo de unsigned charé de 0 a 255 .

 // plain char char plain_1 = 65; char plain_2 = 0; // plain char with negative value // might cause problems with some compilers char plain_3 = -56; // signed char signed char sin_1 = 12; signed char sin_2 = 0; signed char sin_3 = -12; // unsigned char unsigned char unsin_1 = -85; unsigned char unsin_2 = 0;

Aqui,

  • plain_1 contém um número inteiro de valor positivo
  • plain_2 contém um número inteiro de valor zero
  • sin_1 contém um número inteiro de valor positivo
  • sin_2 contém um número inteiro de valor zero
  • sin_3 contém um número inteiro de valor negativo
  • unsin_1 contém um número inteiro de valor negativo
  • unsin_2 contém um inteiro com valor zero

Nota: É preferível não usar caracteres simples para realizar manipulações numéricas; Signed char ou unsigned char deve ser usado para isso. Plain char deve ser usado apenas para armazenar valores de caracteres.

Artigos interessantes...