Tipos de dados em C
Quando escrevemos um programa em C ou C++, por serem linguagens fortemente tipadas é necessário ter uma noção de quanto espaço cada tipo de dado pode ocupar, assim podemos ter uma noção para melhorar a eficiência do código.
Utilizando o programa abaixo, é possível conferir na máquina em que ele será compilado o tamanho de cada tipo de dado do C (bem como seus valores mínimos e máximos).
#include <stdio.h> // biblioteca de entrada e saida padrao
#include <limits.h> // biblioteca que contem os macros (definidos pelo fabricante do compilador) com os valores maximos e minimos suportados pelo mesmo
int main(int argc, char *argv[])
{
// total de bits do processador em que o programa foi compilado
char totalBits = sizeof(int) * 8; // geralmente o tamanho do tipo inteiro eh igual a quantidade de bits de processamento do processador
printf("\n\nMaquina de %d bits\n\n", totalBits);
printf("Tipo em C\t\tTamanho\t\t\tValores\n");
printf("=======================================================\n");
// caracteres
printf("char\t\t\t%d bytes (%d bits)\tsigned (%d a %d) unsigned (0 a %d)\n", sizeof(char), sizeof(char) * 8, SCHAR_MIN, SCHAR_MAX, UCHAR_MAX);
// valores inteiros
printf("int\t\t\t%d bytes (%d bits)\tsigned (%d a %d) unsigned (0 a 0x%X)\n", sizeof(int), sizeof(int) * 8, INT_MIN, INT_MAX, UINT_MAX);
printf("short int\t\t%d bytes (%d bits)\tsigned (%d a %d) unsigned (0 a %d)\n", sizeof(short int), sizeof(short int) * 8, SHRT_MIN, SHRT_MAX, USHRT_MAX);
printf("long int\t\t%d bytes (%d bits)\tsigned (%d a %d) unsigned (0 a 0x%X)\n", sizeof(long int), sizeof(long int) * 8, LONG_MIN, LONG_MAX, ULONG_MAX);
// numeros em ponto flutuante
printf("float\t\t\t%d bytes (%d bits)\n", sizeof(float), sizeof(float) * 8);
printf("double\t\t\t%d bytes (%d bits)\n", sizeof(double), sizeof(double) * 8);
system("PAUSE");
return 0;
}
Saber os tipos de dados e tamanhos pode servir por exemplo para se descobrir qual o menor tipo de dados na máquina utilizada ou a diferença entre dois tipos facilitando assim a escrita de um código mais otimizado.
Possui alguma dica interessante? Não deixe de compartilhar.
2 comentários January 5th, 2009

