#include <stdio.h> // for printf
#include <limits.h> // for upper and lower bounds of integers
#include <float.h> // for upper and lower bounds of floating points
int main(int argc, char *argv[])
{
// char limits
printf("char size: %d bytes\n", sizeof(char));
printf("char lower limit: %d\n", CHAR_MIN);
printf("char upper limit: %d\n", CHAR_MAX);
printf("\n");
// int limits
printf("int size: %d bytes\n", sizeof(int));
printf("int lower limit: %d\n", INT_MIN);
printf("int upper limit: %d\n", INT_MAX);
printf("\n");
// short limits
printf("short size: %d bytes\n", sizeof(short));
printf("short lower limit: %hd\n", SHRT_MIN);
printf("short upper limit: %hd\n", SHRT_MAX);
printf("\n");
// long limits
printf("long size: %d bytes\n", sizeof(long));
printf("long lower limit: %ld\n", LONG_MIN);
printf("long upper limit: %ld\n", LONG_MAX);
printf("\n");
// unsigned int limits
printf("unsigned int size: %d bytes\n", sizeof(unsigned int));
printf("unsigned int lower limit: 0\n");
printf("unsigned int upper limit: %u\n", UINT_MAX);
printf("\n");
// float limits
printf("float size: %d bytes\n", sizeof(float));
printf("float lower limit: %f\n", FLT_MIN);
printf("float upper limit: %f\n", FLT_MAX);
printf("\n");
// double limits
printf("double size: %d bytes\n", sizeof(double));
printf("double lower limit: %f\n", DBL_MIN);
printf("double upper limit: %f\n", DBL_MAX);
printf("\n");
return 0;
}