Tipos de dados
Em C, as variáveis são estaticamente tipadas, ou seja, têm seu tipo pré-definido no código. Em princípio o tipo de uma variável não pode ser mudado (embora isso possa ser contornado através de operações especiais como o type casting).
Os principais tipos de dados em C são:
- Tipos escalares
- Tipos aritméticos
- Inteiros
- Reais
- Complexos (C99)
- Tipos não-escalares
- Arranjos (vetores e matrizes)
Tipos inteiros
Os tipos inteiros básicos no padrão C99 em máquinas de 32 bits e 64 bits são:
Tipo | Tamanho (32 bits) | Faixa (32 bits) | Tamanho (64 bits) | Faixa (64 bits) |
---|---|---|---|---|
char | 1 byte | -128 a +127 ou 0 a 255 | idem | idem |
unsigned char | 1 byte | 0 a 255 | idem | idem |
signed char | 1 byte | -128 a +127 | idem | idem |
short (ou signed short ) | 2 bytes | -32.768 a +32.767 | idem | idem |
unsigned short | 2 bytes | 0 a 65.535 | idem | idem |
int (ou signed int ) | 4 bytes | -231 a +231 - 1 | idem | idem |
unsigned int | 4 bytes | 0 a 232 - 1 | idem | idem |
long (ou signed long ) | 4 bytes | -231 a +231 - 1 | 8 bytes | -263 a +263 - 1 |
unsigned long | 4 bytes | 0 a 232 - 1 | 8 bytes | 0 … 264 - 1 |
long long (ou signed long long ) | 8 bytes | -263 a +263 - 1 | idem | idem |
unsigned long long | 8 bytes | 0 a 264 - 1 | idem | idem |
* e & (endereços) | 4 bytes | - | 8 bytes | - |
limits.h
define constantes para os limites de valores aceitos dos tipos inteiros, como INT_MIN
, LONG_MAX
, etc. No Linux, esse arquivo se encontra em /usr/include/limits.h
.
Como alguns tipos inteiros básicos dependem da implementação do compilador ou da plataforma de execução (16, 32 ou 64 bits), o padrão C99 trouxe definições de tipos inteiros de tamanho fixo (encontradas no arquivo inttypes.h
), como int8_t
(inteiro de 8 bits com sinal), uint32_t
(inteiro de 32 bits sem sinal), etc.
Mais informações sobre tipos de dados em C podem ser encontradas nesta página.
Tipos reais
Os tipos reais (de ponto flutuante) básicos são:
Tipo | Tamanho (bytes) | Faixa de valores | Precisão |
---|---|---|---|
float | 4 bytes | ±1.2×10-38 a ±3.4×10+38 | 6 dígitos |
double | 8 bytes | ±2.3×10-308 a ±1.7×10+308 | 15 dígitos |
long double | 10 bytes | ±3.4×10-4932 a ±1.1×10+4932 | 19 dígitos |
Tipo booleano
A especificação C ANSI original não possui um tipo booleano. Em seu lugar, toda variável ou expressão cujo resultado seja zero (ou nulo) é avaliada como FALSA; caso o resultado seja diferente de zero (ou não-nulo), a variável ou expressão é considerada VERDADEIRA (inclusive valores negativos).
bool
), acessível através do arquivo stdbool.h
.
O Tipo void
A palavra reservada void
designa um valor ou variável de tipo desconhecido. Esse tipo é usado em algumas situações especiais que serão vistas posteriormente, como ponteiros para variáveis cujo tipo é desconhecido a priori ou para indicar que uma função não retorna nenhum valor válido.