#include #include #include 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; }