Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Entendendo Tipos de Dados em C: Guia Abrangente

Tipos de dados em C referem-se a um sistema extenso usado para declarar variáveis ou funções de diferentes tipos. O tipo de uma variável determina quanto espaço ela ocupa no armazenamento e como o padrão de bits armazenado é interpretado.

Os tipos em C podem ser classificados da seguinte forma:

Sr.No. Tipos & Descrição
1

Tipos Básicos

São tipos aritméticos e são classificados em: (a) tipos inteiros e (b) tipos de ponto flutuante.

2

Tipos Enumerados

São novamente tipos aritméticos e são usados para definir variáveis que só podem atribuir certos valores inteiros discretos ao longo do programa.

3

O tipo void

O especificador de tipo void indica que nenhum valor está disponível.

4

Tipos Derivados

Incluem (a) Tipos de Ponteiro, (b) Tipos de Array, (c) Tipos de Estrutura, (d) Tipos de União e (e) Tipos de Função.

Os tipos de array e estrutura são referidos coletivamente como tipos agregados. O tipo de uma função especifica o tipo do valor de retorno da função. Veremos os tipos básicos na seção a seguir, enquanto outros tipos serão abordados nos próximos capítulos.

Tipos Inteiros

A tabela a seguir fornece detalhes dos tipos inteiros padrão com seus tamanhos de armazenamento e faixas de valores:

Tipo Tamanho de Armazenamento Faixa de Valores
char 1 byte -128 a 127 ou 0 a 255
unsigned char 1 byte 0 a 255
signed char 1 byte -128 a 127
int 2 ou 4 bytes -32.768 a 32.767 ou -2.147.483.648 a 2.147.483.647
unsigned int 2 ou 4 bytes 0 a 65.535 ou 0 a 4.294.967.295
short 2 bytes -32.768 a 32.767
unsigned short 2 bytes 0 a 65.535
long 8 bytes ou (4 bytes para SO de 32 bits) -9223372036854775808 a 9223372036854775807
unsigned long 8 bytes 0 a 18446744073709551615

Para obter o tamanho exato de um tipo ou variável em uma plataforma específica, você pode usar o operador sizeof. As expressões sizeof(type) produzem o tamanho de armazenamento do objeto ou tipo em bytes. Abaixo está um exemplo para obter o tamanho de vários tipos em uma máquina usando diferentes constantes definidas no arquivo de cabeçalho limits.h:

Live Demo
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>

int main(int argc, char** argv) {
    printf("CHAR_BIT : %d\n", CHAR_BIT);
    printf("CHAR_MAX : %d\n", CHAR_MAX);
    printf("CHAR_MIN : %d\n", CHAR_MIN);
    printf("INT_MAX : %d\n", INT_MAX);
    printf("INT_MIN : %d\n", INT_MIN);
    printf("LONG_MAX : %ld\n", (long) LONG_MAX);
    printf("LONG_MIN : %ld\n", (long) LONG_MIN);
    printf("SCHAR_MAX : %d\n", SCHAR_MAX);
    printf("SCHAR_MIN : %d\n", SCHAR_MIN);
    printf("SHRT_MAX : %d\n", SHRT_MAX);
    printf("SHRT_MIN : %d\n", SHRT_MIN);
    printf("UCHAR_MAX : %d\n", UCHAR_MAX);
    printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX);
    printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX);
    printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX);
    return 0;
}

Quando você compila e executa o programa acima, ele produz o seguinte resultado no Linux:

CHAR_BIT : 8
CHAR_MAX : 127
CHAR_MIN : -128
INT_MAX : 2147483647
INT_MIN : -2147483648
LONG_MAX : 9223372036854775807
LONG_MIN : -9223372036854775808
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_MAX : 32767
SHRT_MIN : -32768
UCHAR_MAX : 255
UINT_MAX : 4294967295
ULONG_MAX : 18446744073709551615
USHRT_MAX : 65535

Tipos de Ponto Flutuante

A tabela a seguir fornece detalhes dos tipos de ponto flutuante padrão com tamanhos de armazenamento, faixas de valores e sua precisão:

Tipo Tamanho de Armazenamento Faixa de Valores Precisão
float 4 bytes 1.2E-38 a 3.4E+38 6 casas decimais
double 8 bytes 2.3E-308 a 1.7E+308 15 casas decimais
long double 10 bytes 3.4E-4932 a 1.1E+4932 19 casas decimais

O arquivo de cabeçalho float.h define macros que permitem usar esses valores e outros detalhes sobre a representação binária de números reais em seus programas. O exemplo a seguir imprime o espaço de armazenamento ocupado por um tipo float e seus valores de faixa:

Live Demo
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>

int main(int argc, char** argv) {
    printf("Tamanho de armazenamento para float : %d \n", sizeof(float));
    printf("FLT_MAX : %g\n", (float) FLT_MAX);
    printf("FLT_MIN : %g\n", (float) FLT_MIN);
    printf("-FLT_MAX : %g\n", (float) -FLT_MAX);
    printf("-FLT_MIN : %g\n", (float) -FLT_MIN);
    printf("DBL_MAX : %g\n", (double) DBL_MAX);
    printf("DBL_MIN : %g\n", (double) DBL_MIN);
    printf("-DBL_MAX : %g\n", (double) -DBL_MAX);
    printf("Valor de precisão: %d\n", FLT_DIG);
    return 0;
}

Quando você compila e executa o programa acima, ele produz o seguinte resultado no Linux:

Tamanho de armazenamento para float : 4
FLT_MAX : 3.40282e+38
FLT_MIN : 1.17549e-38
-FLT_MAX : -3.40282e+38
-FLT_MIN : -1.17549e-38
DBL_MAX : 1.79769e+308
DBL_MIN : 2.22507e-308
-DBL_MAX : -1.79769e+308
Valor de precisão: 6

O Tipo void

O tipo void especifica que nenhum valor está disponível. É usado em três tipos de situações:

Sr.No. Tipos & Descrição
1

Função retorna como void

Existem várias funções em C que não retornam nenhum valor ou você pode dizer que retornam void. Uma função sem valor de retorno tem o tipo de retorno como void. Por exemplo, void exit (int status);

2

Argumentos de função como void

Existem várias funções em C que não aceitam nenhum parâmetro. Uma função sem parâmetro pode aceitar um void. Por exemplo, int rand(void);

3

Ponteiros para void

Um ponteiro do tipo void * representa o endereço de um objeto, mas não seu tipo. Por exemplo, uma função de alocação de memória void *malloc( size_t size ); retorna um ponteiro para void que pode ser convertido para qualquer tipo de dado.

Linguagem C

  1. Entendendo Chaves Elétricas: Tipos, Funções e Aplicações
  2. Domine Variáveis e Tipos de Dados Primitivos em C#: Guia Completo
  3. Entendendo Tipos de Dados em C++: Fundamentos, Modificadores e Boas Práticas
  4. Tipos de Dados em C Explicados: int, float, char e Mais – Guia Completo
  5. Dominando Tipos de Dados em Python: Guia Prático
  6. Tipos de Dados Primitivos do Java: Guia Completo com Exemplos
  7. Variáveis, Tipos de Dados e Constantes em C – Guia Prático
  8. 5 Modelos de Data Center Explicados: Design, Casos de Uso e Exemplos
  9. Oito Modelos Principais de Computação em Nuvem de 2021
  10. 8 Tipos Comuns de Vazamento de Dados – Exemplos Reais e Impacto