#include <stdio.h>
#include <limits.h>

int main() { 
	
	printf("%-20s%10s%10s%25s%25s\n", "C data type", "bytes", "bits", "Min value", "Max value");
	printf("-----------------------------------------------------------------------------------------\n");
	printf("%-20s%10lu%10lu%25d%25d\n", "char", sizeof(char), 8*sizeof(char), CHAR_MIN, CHAR_MAX);
	printf("%-20s%10lu%10lu%25d%25d\n", "unsigned char", sizeof(unsigned char), 8*sizeof(unsigned char), 0, UCHAR_MAX);
	printf("\n");
	printf("%-20s%10lu%10lu%25d%25d\n", "short", sizeof(short), 8*sizeof(short), SHRT_MIN, SHRT_MAX);
	printf("%-20s%10lu%10lu%25d%25d\n", "unsigned short", sizeof(unsigned short), 8*sizeof(unsigned short), 0, USHRT_MAX);
	printf("\n");
	printf("%-20s%10lu%10lu%25d%25d\n", "int", sizeof(int), 8*sizeof(int), INT_MIN, INT_MAX);
	printf("%-20s%10lu%10lu%25d%25u\n", "unsigned", sizeof(unsigned), 8*sizeof(unsigned), 0, UINT_MAX);
	printf("\n");
	printf("%-20s%10lu%10lu%25ld%25ld\n", "long", sizeof(long), 8*sizeof(long), LONG_MIN, LONG_MAX);
	printf("%-20s%10lu%10lu%25lu%25lu\n", "unsigned long", sizeof(unsigned long), 8*sizeof(unsigned long), 0L, ULONG_MAX);
	printf("\n");
	printf("%-20s%10lu%10lu%25ld%25ld\n", "long long", sizeof(long long), 8*sizeof(long long), LONG_MIN, LONG_MAX);
	printf("%-20s%10lu%10lu%25lu%25lu\n", "unsigned long long", sizeof(unsigned long long), 8*sizeof(unsigned long long), 0L, ULONG_MAX);

	printf("TAKE-HOME: Different types have different size ranges\n");

	return 0;  
}

