Na linguagem C, os tipos de dados desempenham um papel crucial ao definir a natureza das variáveis e como elas são representadas na memória. Este artigo explora os tipos de dados e variáveis em C, focando em seus aspectos fundamentais.
Tipos de Dados
Classificação dos Tipos de Dados
Em C, os tipos de dados são categorizados em dois grupos principais: tipos integrados (built-in) e tipos definidos pelo usuário. Os tipos integrados são suportados nativamente pela linguagem e incluem tipos como int, float, char e double. Os tipos definidos pelo usuário são construídos a partir dos integrados, abrangendo estruturas como arrays, structs, enums e unions.
Tipos Entegrados
Os tipos integrados podem ser subdivididos em três categorias: tipos de caractere, tipos inteiros e tipos de ponto flutuante.
Tipos de Caractere
char
signed char
unsigned char
Tipos Inteiros
short int
signed short int
unsigned short int
int
signed int
unsigned int
long int
signed long
unsigned long
// Nota: o qualificador signed pode ser omitido em tipos inteiros.
Embora o tipo char seja frequentemente tratado como um inteiro de 8 bits.
Tipos de Ponto Flutuante
float
double
long double
Tamanho na Memória dos Tipos de Dados
Para determinar o tamanho dos tipos de dados em bytes, utiliza-se o operador sizeof, que retorna o tamanho de um tipo ou expressão em bytes. O operador sizeof não avalia expressões; apenas determina o tamanho do tipo resultante. O valor retornado geralmente é do tipo size_t.
Exemplo de código para exibir os tamanhos dos tipos de dados comuns:
#include <stdio.h>
int main() {
size_t tam_char = sizeof(char);
size_t tam_int = sizeof(int);
size_t tam_float = sizeof(float);
size_t tam_double = sizeof(double);
printf("Tamanho de char: %zu bytes\n", tam_char);
printf("Tamanho de int: %zu bytes\n", tam_int);
printf("Tamanho de float: %zu bytes\n", tam_float);
printf("Tamanho de double: %zu bytes\n", tam_double);
return 0;
}
Os tamanhos podem variar dependendo da arquitetura do sistema, mas valores típicos incluem 1 byte para char, 4 bytes para int e float, e 8 bytes para double.
Faixas de Valores dos Tipos de Dados
As faixas de valores para tipos inteiros são definidas em limits.h, enquanto as para tipos de ponto flutuante estão em float.h. Constantes como INT_MIN, INT_MAX para int, e FLT_MAX para float, permitem acessar esses limites programaticamente.
Variáveis
Criação de Variáveis
Em C, as variáveis são declaradas especificando o tipo de dado seguido pelo nome da variável. Opcionalmente, um valor inicial pode ser atribuído durante a declaração.
int contador = 0;
float temperatura = 36.5;
char caractere = 'A';
Classificação das Variáveis
As variáveis são classificadas em globais e locais. Variáveis globais são declaradas fora de funções e têm escopo por todo o programa. Variáveis locais são declaradas dentro de blocos de código (como funções) e têm escopo limitado a esse bloco. Se uma variável local tiver o mesmo nome que uma global, a local prevalece dentro de seu escopo.
Armazenamento das Variáveis
As variáveis são armazenadas em diferentes regiões de memória. Variáveis globais residem na área estática, variáveis locais na pilha (stack), e alocações dinâmicas utilizam a heap. Essa organização afeta o ciclo de vida e a acessibilidade das variáveis durante a execução do programa.