Variações de Inteiros

Os tipos inteiros em C têm nomes padrão, mas seu significado pode variar dependendo do tipo de plataforma usada: o tipo de computador, o sistema operacional e o compilador. Pode até mesmo depender das opções usadas no compilador.

O char simples pode ser com sinal ou sem sinal; isso também depende da plataforma. Mesmo no GNU C, não há uma regra geral.

Em teoria, os tamanhos de todos os tipos inteiros podem variar. char é sempre considerado um "byte" em C, mas não necessariamente um byte de 8 bits; em algumas plataformas, ele pode ter mais de 8 bits. O padrão ISO C especifica apenas que nenhum desses tipos pode ser mais estreito do que os que estão acima dele na lista de Inteiros Básicos e que short tem pelo menos 16 bits.

É possível que no futuro o GNU C suporte plataformas onde int tenha 64 bits. Na prática, no entanto, nos computadores reais de hoje, há pouca variação; você pode confiar na tabela apresentada anteriormente (veja Inteiros Básicos).

Para ter certeza absoluta do tamanho de um tipo inteiro, use os tipos int16_t, int32_t e int64_t. Seus tipos sem sinal correspondentes adicionam ‘u’ no início: uint16_t, uint32_t e uint64_t. Para definir todos esses tipos, inclua o arquivo de cabeçalho stdint.h.

O GNU C Compiler compila para alguns controladores embarcados que usam dois bytes para int. Em alguns, int é apenas um "byte", e o mesmo vale para short int — mas esse "byte" pode conter 16 bits ou até 32 bits. Esses processadores não suportam sistemas operacionais comuns (eles têm seus próprios sistemas operacionais especializados), e a maioria dos programas em C não tenta oferecer suporte a tais processadores.

Atualizado