/* File: floatlimits.c */

/* Stampa numero byte occupati e l'intervallo di definizione per tipi: float, double, long double */

#include <stdio.h>
#include <float.h>

int main(void)
{
  printf("Un oggetto float occupa: sizeof(float) = %d byte\n",
         sizeof(float));
  printf("Numero di cifre decimali significative float: FLT_DIG = %d\n\n",
         FLT_DIG);
  printf("Minimo e massimo esponente float: FLT_MIN_10_EXP = %d, FLT_MAX_10_EXP = %d\n",
         FLT_MIN_10_EXP, FLT_MAX_10_EXP);

  printf("Un oggetto double occupa: sizeof(double) = %d byte\n",
         sizeof(double));
  printf("Numero di cifre decimali significative double: DBL_DIG = %d\n",
         DBL_DIG);
  printf("Minimo e massimo esponente double: DBL_MIN_10_EXP = %d, DBL_MAX_10_EXP = %d\n\n",
         DBL_MIN_10_EXP, DBL_MAX_10_EXP);

  printf("Un oggetto long double occupa: sizeof(long double) = %d byte\n",
         sizeof(long double));
  printf("Numero di cifre decimali significative long double: LDBL_DIG = %d\n",
         LDBL_DIG);
  printf("Minimo e massimo esponente long double: LDBL_MIN_10_EXP = %d, LDBL_MAX_10_EXP = %d\n\n",
         LDBL_MIN_10_EXP, LDBL_MAX_10_EXP);
  return 0;
}

/* output:
Un oggetto float occupa: sizeof(float) = 4 byte
Numero di cifre decimali significative float: FLT_DIG = 6
Minimo e massimo esponente float: FLT_MIN_10_EXP = -37, FLT_MAX_10_EXP = 38

Un oggetto double occupa: sizeof(double) = 8 byte
Numero di cifre decimali significative double: DBL_DIG = 15
Minimo e massimo esponente double: DBL_MIN_10_EXP = -307, DBL_MAX_10_EXP = 308

Un oggetto long double occupa: sizeof(long double) = 16 byte
Numero di cifre decimali significative long double: LDBL_DIG = 33
Minimo e massimo esponente long double: LDBL_MIN_10_EXP = -4931, LDBL_MAX_10_EXP = 4932

*/
