User Tools

Site Tools


prog2:tipos_de_dados

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 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 ponteiros
  • Tipos não-escalares
    • Estruturas (structs)
    • Uniões
    • Arranjos (vetores e matrizes)

Tipos Inteiros

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

O arquivo 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.

Tipos Reais

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

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).

A especificação C99 trouxe um tipo booleano (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.

prog2/tipos_de_dados.txt · Last modified: 2019/01/31 17:28 (external edit)