É que estou fazendo um programa que mostra o tamanho de cada tipo de dados na máquina, porque li que em cada máquina pode ser diferente, logo seria somente pra verificação antes de começar a programar em uma máquina que não conheço.
E ele estava ficando muito grande:
///////////////////////////////////////////////////////////////////////////////////////
// TAMANHO DE TIPOS //
// Programa para saber a quantidade de memória ocupada por cada tipo de dados //
// Eric MGS //
// 08_12_2017 //
///////////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <math.h>
void main (void) {
int tamanho,
intervalo;
//CHAR/SIGNED CHAR
tamanho = sizeof (char);
intervalo = (pow(2,8*tamanho)-1);
printf ("CHAR/SIGNED CHAR:\n");
printf ("Tamanho em bytes: %i\n",tamanho);
printf ("Intervalo: -%i a %i\n\n",intervalo/2,intervalo/2);
//UNSIGNED CHAR
tamanho = sizeof (unsigned char);
intervalo = (pow(2,8*tamanho)-1);
printf ("UNSIGNED CHAR:\n");
printf ("Tamanho em bytes: %i\n",tamanho);
printf ("Intervalo: 0 a %i\n\n",intervalo);
//SHORT/SHORT INT/SIGNED SHORT/SIGNED SHORT INT
tamanho = sizeof (short);
intervalo = (pow(2,8*tamanho)-1);
printf ("SHORT/SHORT INT/SIGNED SHORT/SIGNED SHORT INT:\n");
printf ("Tamanho em bytes: %i\n",tamanho);
printf ("Intervalo: -%i a %i\n\n",intervalo/2,intervalo/2);
//UNSIGNED SHORT/UNSIGNED SHORT INT
tamanho = sizeof (unsigned short);
intervalo = (pow(2,8*tamanho)-1);
printf ("UNSIGNED SHORT/UNSIGNED SHORT INT:\n");
printf ("Tamanho em bytes: %i\n",tamanho);
printf ("Intervalo: 0 a %i\n\n",intervalo);
//INT/SIGNED/SIGNED INT
tamanho = sizeof (int);
intervalo = (pow(2,8*tamanho)-1);
printf ("INT/SIGNED/SIGNED INT:\n");
printf ("Tamanho em bytes: %i\n",tamanho);
printf ("Intervalo: -%i a %i\n\n",intervalo/2,intervalo/2);
//UNSIGNED/UNSIGNED INT
tamanho = sizeof (unsigned);
intervalo = (pow(2,8*tamanho)-1);
printf ("UNSIGNED/UNSIGNED INT:\n");
printf ("Tamanho em bytes: %i\n",tamanho);
printf ("Intervalo: 0 a %i\n\n",intervalo);
//LONG/LONG INT/SIGNED LONG/SIGNED LONG INT
tamanho = sizeof (long);
intervalo = (pow(2,8*tamanho)-1);
printf ("LONG/LONG INT/SIGNED LONG/SIGNED LONG INT:\n");
printf ("Tamanho em bytes: %i\n",tamanho);
printf ("Intervalo: -%i a %i\n\n",intervalo/2,intervalo/2);
//UNSIGNED LONG/UNSIGNED LONG INT
tamanho = sizeof (unsigned long);
intervalo = (pow(2,8*tamanho)-1);
printf ("UNSIGNED LONG/UNSIGNED LONG INT:\n");
printf ("Tamanho em bytes: %i\n",tamanho);
printf ("Intervalo: 0 a %i\n\n",intervalo);
//LONG LONG/LONG LONG INT/SIGNED LONG LONG/SIGNED LONG LONG INT
tamanho = sizeof (long long);
intervalo = (pow(2,8*tamanho)-1);
printf ("LONG LONG/LONG LONG INT/SIGNED LONG LONG/SIGNED LONG LONG INT:\n");
printf ("Tamanho em bytes: %i\n",tamanho);
printf ("Intervalo: -%i a %i\n\n",intervalo/2,intervalo/2);
//UNSIGNED LONG LONG/UNSIGNED LONG LONG INT
tamanho = sizeof (unsigned long long);
intervalo = (pow(2,8*tamanho)-1);
printf ("UNSIGNED LONG LONG/UNSIGNED LONG LONG INT:\n");
printf ("Tamanho em bytes: %i\n",tamanho);
printf ("Intervalo: 0 a %i\n\n",intervalo);
}
E ainda falta o float, double e long double, então queria saber se dava pra fazer dessa forma que perguntei para diminuir o tamanho, sem precisar repetir os blocos de cada tipo que tem o mesmo código, mudando apenas no sizeof .
Quanto ao int32, não sabia sobre isso, é só com o int que dá pra fazer isso?