#include <stdio.h>
#include <float.h>
#include <limits.h>
int main(void) {
printf("char:\n Bits: %-16d\t\t\t Bytes: %zu\n", CHAR_BIT, sizeof(char));
printf(" Minimum: %-16d\t\t Signed min: %d\n", CHAR_MIN, SCHAR_MIN);
printf(" Maximum: %-16d\t\t Signed max: %d\n", CHAR_MAX, SCHAR_MAX);
printf(" Unsigned max: %d\n\n", UCHAR_MAX);
printf("short int:\t\t\t\tint:\n");
printf(" Bytes: %zu\t\t\t\t Bytes: %zu\n", sizeof(short int), sizeof(int));
printf(" Minimum: %-16d\t\t Minimum: %d\n", SHRT_MIN, INT_MIN);
printf(" Maximum: %-16d\t\t Maximum: %d\n", SHRT_MAX, INT_MAX);
printf(" Unsigned max: %-16d\t\t Unsigned max: %u\n\n", USHRT_MAX, UINT_MAX);
#if __STDC_VERSION__ >= 199901L
printf("long int:\t\t\t\tlong long int:\n");
printf(" Bytes: %zu\t\t\t\t Bytes: %zu\n", sizeof(long), sizeof(long long));
printf(" Minimum: %-16ld\t\t Minimum: %lld\n", LONG_MIN, LLONG_MIN);
printf(" Maximum: %-16ld\t\t Maximum: %lld\n", LONG_MAX, LLONG_MAX);
printf(" Unsigned max: %-16lu\t\t Unsigned max: %llu\n\n", ULONG_MAX,
ULLONG_MAX);
#else
printf("long int:\n");
printf(" Bytes: %zu\n", sizeof(long));
printf(" Minimum: %-16ld\n Maximum: %ld\n", LONG_MIN, LONG_MAX);
printf(" Unsigned max: %lu\n\n", ULONG_MAX);
#endif
printf("float:\n");
printf(" Bytes: %zu\n", sizeof(float));
printf(" Precision: %-16d\t\t Epsilon: %.*g\n", FLT_DIG, FLT_DIG, (double)
FLT_EPSILON);
printf(" Minimum: %-16.*g\t\t Min exponent: %d\n", FLT_DIG, (double) FLT_MIN,
FLT_MIN_EXP);
printf(" Maximum: %-16.*g\t\t Max exponent: %d\n", FLT_DIG, (double) FLT_MAX,
FLT_MAX_EXP);
printf(" Min 10 exponent: %-16d\t Max 10 exponent: %d\n\n", FLT_MIN_10_EXP,
FLT_MAX_10_EXP);
printf("double:\n");
printf(" Bytes: %zu\n", sizeof(double));
printf(" Precision: %-16d\t\t Epsilon: %.*g\n", DBL_DIG, DBL_DIG, DBL_EPSILON);
printf(" Minimum: %-16.*g\t\t Min exponent: %d\n", DBL_DIG, DBL_MIN,
DBL_MIN_EXP);
printf(" Maximum: %-16.*g\t\t Max exponent: %d\n", DBL_DIG, DBL_MAX,
DBL_MAX_EXP);
printf(" Min 10 exponent: %-16d\t Max 10 exponent: %d\n\n", DBL_MIN_10_EXP,
DBL_MAX_10_EXP);
printf("long double:\n");
printf(" Bytes: %zu\n", sizeof(long double));
printf(" Precision: %-16d\t\t Epsilon: %.*Lg\n", LDBL_DIG, LDBL_DIG,
LDBL_EPSILON);
printf(" Minimum: %-29.*Lg\t Min exponent: %d\n", LDBL_DIG, LDBL_MIN,
LDBL_MIN_EXP);
printf(" Maximum: %-29.*Lg\t Max exponent: %d\n", LDBL_DIG, LDBL_MAX,
LDBL_MAX_EXP);
printf(" Min 10 exponent: %-16d\t Max 10 exponent: %d\n\n", LDBL_MIN_10_EXP,
LDBL_MAX_10_EXP);
return 0;
}