C - Tipos de dados
Os tipos de dados em c referem-se a um sistema extensivo usado para declarar variáveis ou funções de diferentes tipos. O tipo de uma variável determina quanto espaço ela ocupa no armazenamento e como o padrão de bits armazenado é interpretado.
Os tipos em C podem ser classificados da seguinte forma -
Nº Sr. | Tipos e descrição |
---|---|
1 | Tipos básicos Eles são tipos aritméticos e são classificados em:(a) tipos inteiros e (b) tipos de ponto flutuante. |
2 | Tipos enumerados Eles são novamente tipos aritméticos e são usados para definir variáveis que só podem atribuir certos valores inteiros discretos ao longo do programa. |
3 | O tipo void O especificador de tipo void indica que nenhum valor está disponível. |
4 | Tipos derivados Eles incluem (a) Tipos de ponteiro, (b) Tipos de matriz, (c) Tipos de estrutura, (d) Tipos de união e (e) Tipos de função. |
Os tipos de matriz e tipos de estrutura são referidos coletivamente como tipos agregados. O tipo de uma função especifica o tipo do valor de retorno da função. Veremos os tipos básicos na seção a seguir, enquanto outros tipos serão abordados nos próximos capítulos.
Tipos inteiros
A tabela a seguir fornece os detalhes dos tipos inteiros padrão com seus tamanhos de armazenamento e intervalos de valores -
Tipo | Tamanho do armazenamento | Intervalo de valores |
---|---|---|
caractere | 1 byte | -128 a 127 ou 0 a 255 |
caractere não assinado | 1 byte | 0 a 255 |
caractere assinado | 1 byte | -128 a 127 |
int | 2 ou 4 bytes | -32.768 a 32.767 ou -2.147.483.648 a 2.147.483.647 |
int não assinado | 2 ou 4 bytes | 0 a 65.535 ou 0 a 4.294.967.295 |
curta | 2 bytes | -32.768 a 32.767 |
short não assinado | 2 bytes | 0 a 65.535 |
longo | 8 bytes ou (4 bytes para SO de 32 bits) | -9223372036854775808 para 9223372036854775807 |
não assinado longo | 8 bytes | 0 a 18446744073709551615 |
Para obter o tamanho exato de um tipo ou variável em uma plataforma específica, você pode usar o sizeof operador. As expressões sizeof(type) produz o tamanho de armazenamento do objeto ou tipo em bytes. Dado abaixo é um exemplo para obter o tamanho de vários tipos em uma máquina usando diferentes constantes definidas no arquivo de cabeçalho limites.h −
Demonstração ao vivo
#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("CHAR_BIT : %d\n", CHAR_BIT); printf("CHAR_MAX : %d\n", CHAR_MAX); printf("CHAR_MIN : %d\n", CHAR_MIN); printf("INT_MAX : %d\n", INT_MAX); printf("INT_MIN : %d\n", INT_MIN); printf("LONG_MAX : %ld\n", (long) LONG_MAX); printf("LONG_MIN : %ld\n", (long) LONG_MIN); printf("SCHAR_MAX : %d\n", SCHAR_MAX); printf("SCHAR_MIN : %d\n", SCHAR_MIN); printf("SHRT_MAX : %d\n", SHRT_MAX); printf("SHRT_MIN : %d\n", SHRT_MIN); printf("UCHAR_MAX : %d\n", UCHAR_MAX); printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX); printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX); printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX); return 0; }
Quando você compila e executa o programa acima, ele produz o seguinte resultado no Linux −
CHAR_BIT : 8 CHAR_MAX : 127 CHAR_MIN : -128 INT_MAX : 2147483647 INT_MIN : -2147483648 LONG_MAX : 9223372036854775807 LONG_MIN : -9223372036854775808 SCHAR_MAX : 127 SCHAR_MIN : -128 SHRT_MAX : 32767 SHRT_MIN : -32768 UCHAR_MAX : 255 UINT_MAX : 4294967295 ULONG_MAX : 18446744073709551615 USHRT_MAX : 65535
Tipos de ponto flutuante
A tabela a seguir fornece os detalhes dos tipos de ponto flutuante padrão com tamanhos de armazenamento e intervalos de valores e sua precisão -
Tipo | Tamanho do armazenamento | Intervalo de valores | Precisão |
---|---|---|---|
flutuar | 4 bytes | 1,2E-38 a 3,4E+38 | 6 casas decimais |
duplo | 8 bytes | 2,3E-308 a 1,7E+308 | 15 casas decimais |
dupla longa | 10 bytes | 3.4E-4932 a 1.1E+4932 | 19 casas decimais |
O arquivo de cabeçalho float.h define macros que permitem usar esses valores e outros detalhes sobre a representação binária de números reais em seus programas. O exemplo a seguir imprime o espaço de armazenamento ocupado por um tipo float e seus valores de intervalo -
Demonstração ao vivo
#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("Storage size for float : %d \n", sizeof(float)); printf("FLT_MAX : %g\n", (float) FLT_MAX); printf("FLT_MIN : %g\n", (float) FLT_MIN); printf("-FLT_MAX : %g\n", (float) -FLT_MAX); printf("-FLT_MIN : %g\n", (float) -FLT_MIN); printf("DBL_MAX : %g\n", (double) DBL_MAX); printf("DBL_MIN : %g\n", (double) DBL_MIN); printf("-DBL_MAX : %g\n", (double) -DBL_MAX); printf("Precision value: %d\n", FLT_DIG ); return 0; }
Quando você compila e executa o programa acima, ele produz o seguinte resultado no Linux −
Storage size for float : 4 FLT_MAX : 3.40282e+38 FLT_MIN : 1.17549e-38 -FLT_MAX : -3.40282e+38 -FLT_MIN : -1.17549e-38 DBL_MAX : 1.79769e+308 DBL_MIN : 2.22507e-308 -DBL_MAX : -1.79769e+308 Precision value: 6
O tipo void
O tipo void especifica que nenhum valor está disponível. É usado em três tipos de situações -
Nº Sr. | Tipos e descrição |
---|---|
1 | Função retorna como nula Existem várias funções em C que não retornam nenhum valor ou você pode dizer que elas retornam void. Uma função sem valor de retorno tem o tipo de retorno como void. Por exemplo, void exit (int status); |
2 | Argumentos de função como nulos Existem várias funções em C que não aceitam nenhum parâmetro. Uma função sem parâmetro pode aceitar um void. Por exemplo, int rand(void); |
3 | Ponteiros para anular Um ponteiro do tipo void * representa o endereço de um objeto, mas não seu tipo. Por exemplo, uma função de alocação de memória void *malloc( size_t size); retorna um ponteiro para void que pode ser convertido em qualquer tipo de dados. |
Linguagem C
- Tipos de troca
- Variáveis C# e tipos de dados (primitivos)
- Tipos de dados C++
- Tipos de dados C
- Tipos de dados Python
- Tipos de dados Java (Primitivo)
- Variável C, Tipos de Dados, Constantes
- 5 tipos diferentes de data center [com exemplos]
- 8 tipos diferentes de computação em nuvem em 2021
- 8 tipos diferentes de violação de dados com exemplos