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 possa ser contornado através de operações especiais como o type casting).
Os principais tipos de dados em C são:
Os tipos inteiros básicos no padrão ANSI são:
Tipo | Tamanho (bytes) | Faixa de valores aceitos |
---|---|---|
char | 1 byte | -128…127 ou 0…255 (depende da implementação) |
unsigned char | 1 byte | 0…255 |
signed char | 1 byte | -128…127 |
int | 2 ou 4 bytes | -32.768…32.767 (32 bits) ou -2.147.483.648…2.147.483.647 (64 bits) |
unsigned int | 2 ou 4 bytes | 0…65.535 (32 bits) ou 0…4.294.967.295 (64 bits) |
short | 2 bytes | -32.768…32.767 |
unsigned short | 2 bytes | 0…65.535 |
long | 4 bytes | -2.147.483.648…2.147.483.647 |
unsigned long | 4 bytes | 0…4.294.967.295 |
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
.
O padrão C99 definiu mais alguns tipos inteiros, entre eles:
Tipo | Tamanho (bytes) | Faixa de valores aceitos |
---|---|---|
long long | 8 bytes | -9.223.372.036.854.775.807…9.223.372.036.854.775.807 |
unsigned long long | 8 bytes | 0…18.446.744.073.709.551.615 |
Como alguns tipos inteiros básicos dependem da implementação do compilador ou da plataforma de execução, 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 podem ser encontradas nesta página.
Os tipos reais (de ponto flutuante) básicos são:
Tipo | Tamanho (bytes) | Faixa de valores aceitos | Precisão |
---|---|---|---|
float | 4 bytes | 1.2E-38…3.4E+38 | 6 dígitos |
double | 8 bytes | 2.3E-308…1.7E+308 | 15 dígitos |
long double | 10 bytes | 3.4E-4932…1.1E+4932 | 19 dígitos |
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
.
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.