Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
oorrja
GitHub Repository: oorrja/learntosolveit
Path: blob/master/languages/cprogs/Ex_2.1_cal_limits.c
1240 views
1
/***
2
*
3
* Exercise 2.1
4
*
5
* Program to print maximum, minimum limits of char, int, long using
6
* calculation
7
*
8
***/
9
10
/* The logic used is
11
* ~0 will give bits in 1s.
12
* (unsigned <type>) will cast it unsigned.
13
* >> 1 right shifts 1 bit to remove the sign bit.
14
* (<type>) casting it the required type again
15
*/
16
17
#include<stdio.h>
18
#include<limits.h>
19
#include<float.h>
20
21
int main(void)
22
{
23
/* ranges of various floating-point types through calculation */
24
printf("Ranges of various floating-point types through calculation:\n");
25
26
printf("Minimum Signed Char %d\n",-(char)((unsigned char) ~0 >> 1) - 1);
27
printf("Maximum Signed Char %d\n",(char) ((unsigned char) ~0 >> 1));
28
29
printf("Minimum Signed Short %d\n",-(short)((unsigned short)~0 >>1) -1);
30
printf("Maximum Signed Short %d\n",(short)((unsigned short)~0 >> 1));
31
32
printf("Minimum Signed Int %d\n",-(int)((unsigned int)~0 >> 1) -1);
33
printf("Maximum Signed Int %d\n",(int)((unsigned int)~0 >> 1));
34
35
printf("Minimum Signed Long %ld\n",-(long)((unsigned long)~0 >>1) -1);
36
printf("Maximum signed Long %ld\n",(long)((unsigned long)~0 >> 1));
37
38
/* Unsigned Maximum Values */
39
40
printf("Maximum Unsigned Char %d\n",(unsigned char)~0);
41
printf("Maximum Unsigned Short %d\n",(unsigned short)~0);
42
printf("Maximum Unsigned Int %u\n",(unsigned int)~0);
43
printf("Maximum Unsigned Long %lu\n\n",(unsigned long)~0);
44
45
/* ranges of various floating-point types from standard headers */
46
printf("Ranges of various floating-point types from standard headers:\n");
47
48
printf("Minimum Signed Char %d\n", SCHAR_MIN);
49
printf("Maximum Signed Char %d\n", SCHAR_MAX);
50
51
printf("Minimum Signed Short %d\n", SHRT_MIN);
52
printf("Maximum Signed Short %d\n", SHRT_MAX);
53
54
printf("Minimum Signed Int %d\n", INT_MIN);
55
printf("Maximum Signed Int %d\n", INT_MAX);
56
57
printf("Minimum Signed Long %ld\n", LONG_MIN);
58
printf("Maximum signed Long %ld\n", LONG_MAX);
59
60
/* Unsigned Maximum Values */
61
62
printf("Maximum Unsigned Char %d\n", UCHAR_MAX);
63
printf("Maximum Unsigned Short %d\n", USHRT_MAX);
64
printf("Maximum Unsigned Int %u\n", UINT_MAX);
65
printf("Maximum Unsigned Long %lu\n", ULONG_MAX);
66
67
return 0;
68
}
69
70