Path: blob/master/languages/cprogs/Ex_2.1_cal_limits.c
1240 views
/***1*2* Exercise 2.13*4* Program to print maximum, minimum limits of char, int, long using5* calculation6*7***/89/* The logic used is10* ~0 will give bits in 1s.11* (unsigned <type>) will cast it unsigned.12* >> 1 right shifts 1 bit to remove the sign bit.13* (<type>) casting it the required type again14*/1516#include<stdio.h>17#include<limits.h>18#include<float.h>1920int main(void)21{22/* ranges of various floating-point types through calculation */23printf("Ranges of various floating-point types through calculation:\n");2425printf("Minimum Signed Char %d\n",-(char)((unsigned char) ~0 >> 1) - 1);26printf("Maximum Signed Char %d\n",(char) ((unsigned char) ~0 >> 1));2728printf("Minimum Signed Short %d\n",-(short)((unsigned short)~0 >>1) -1);29printf("Maximum Signed Short %d\n",(short)((unsigned short)~0 >> 1));3031printf("Minimum Signed Int %d\n",-(int)((unsigned int)~0 >> 1) -1);32printf("Maximum Signed Int %d\n",(int)((unsigned int)~0 >> 1));3334printf("Minimum Signed Long %ld\n",-(long)((unsigned long)~0 >>1) -1);35printf("Maximum signed Long %ld\n",(long)((unsigned long)~0 >> 1));3637/* Unsigned Maximum Values */3839printf("Maximum Unsigned Char %d\n",(unsigned char)~0);40printf("Maximum Unsigned Short %d\n",(unsigned short)~0);41printf("Maximum Unsigned Int %u\n",(unsigned int)~0);42printf("Maximum Unsigned Long %lu\n\n",(unsigned long)~0);4344/* ranges of various floating-point types from standard headers */45printf("Ranges of various floating-point types from standard headers:\n");4647printf("Minimum Signed Char %d\n", SCHAR_MIN);48printf("Maximum Signed Char %d\n", SCHAR_MAX);4950printf("Minimum Signed Short %d\n", SHRT_MIN);51printf("Maximum Signed Short %d\n", SHRT_MAX);5253printf("Minimum Signed Int %d\n", INT_MIN);54printf("Maximum Signed Int %d\n", INT_MAX);5556printf("Minimum Signed Long %ld\n", LONG_MIN);57printf("Maximum signed Long %ld\n", LONG_MAX);5859/* Unsigned Maximum Values */6061printf("Maximum Unsigned Char %d\n", UCHAR_MAX);62printf("Maximum Unsigned Short %d\n", USHRT_MAX);63printf("Maximum Unsigned Int %u\n", UINT_MAX);64printf("Maximum Unsigned Long %lu\n", ULONG_MAX);6566return 0;67}686970