Ferramentas do usuário

Ferramentas do site


prog2:tipos_de_dados

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
prog2:tipos_de_dados [2019/05/03 10:08]
maziero [Tipos Reais]
prog2:tipos_de_dados [2019/08/19 13:19] (atual)
maziero [Tipos de dados]
Linha 1: Linha 1:
 +====== 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 ponteiros
 +  * Tipos não-escalares
 +    * Arranjos (vetores e matrizes)
 +    * Estruturas (structs)
 +    * Uniões
 +
 +===== Tipos Inteiros =====
 +
 +Os tipos inteiros básicos no padrão C99 são:
 +
 +^Tipo ^ Tamanho (32 bits) ^ Valores (32 bits) ^ Tamanho (64 bits) ^ Valores (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''​ | 2 bytes | -32.768 a 32.767 | idem | idem |
 +| ''​unsigned short''​ | 2 bytes | 0 a 65.535 | idem | idem |
 +| ''​int''​ | 4 bytes | -2<​sup>​31</​sup>​ a 2<​sup>​31</​sup>​ - 1 | idem | idem |
 +| ''​unsigned int''​ | 4 bytes | 0 a 2<​sup>​32</​sup>​ - 1 | idem | idem |
 +| ''​long''​ | 4 bytes | -2<​sup>​31</​sup>​ a 2<​sup>​31</​sup>​ - 1 | 8 bytes | -2<​sup>​63</​sup>​ a 2<​sup>​63</​sup>​ - 1 |
 +| ''​unsigned long''​ | 4 bytes | 0 a 2<​sup>​32</​sup>​ - 1 | 8 bytes | 0 ... 2<​sup>​64</​sup>​ - 1 |
 +| ''​long long''​ | 8 bytes | -2<​sup>​63</​sup>​ a 2<​sup>​63</​sup>​ - 1 | idem | idem |
 +| ''​unsigned long long''​ | 8 bytes | 0 a 2<​sup>​64</​sup>​ - 1 | idem | idem |
 +
 +<note tip>
 +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''​.
 +</​note>​
 +
 +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 [[https://​en.wikipedia.org/​wiki/​C_data_types|nesta página]].
 +
 +===== Tipos Reais =====
 +
 +Os tipos reais (de ponto flutuante) básicos são:
 +
 +^ Tipo ^ Tamanho (bytes) ^ Valores aceitos ^ Precisão ^
 +| ''​float''​ | 4 bytes | 1.2×10<​sup>​-38</​sup>​ a 3.4×10<​sup>​+38</​sup>​ | 6 dígitos |
 +| ''​double''​ | 8 bytes | 2.3×10<​sup>​-308</​sup>​ a 1.7×10<​sup>​+308</​sup>​ | 15 dígitos |
 +| ''​long double''​ | 10 bytes | 3.4×10<​sup>​-4932</​sup>​ a 1.1×10<​sup>​+4932</​sup>​ | 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).
 +
 +<note tip>
 +A especificação C99 trouxe um tipo booleano (''​bool''​),​ acessível através do arquivo ''​stdbool.h''​. ​
 +</​note>​
 +
 +===== 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.
 +