Blame


1 5dc21454 2023-07-14 jrmu /*
2 5dc21454 2023-07-14 jrmu * 2-1. Write a program to determine the ranges of char, short, int, and long variables, both signed and unsigned, by printing appropriate values from standard headers and by direct computation. Harder if you compute them: determine the ranges of the various floating-point types.
3 5dc21454 2023-07-14 jrmu */
4 5dc21454 2023-07-14 jrmu
5 5dc21454 2023-07-14 jrmu #include <stdio.h>
6 5dc21454 2023-07-14 jrmu #include <limits.h>
7 5dc21454 2023-07-14 jrmu
8 5dc21454 2023-07-14 jrmu main()
9 5dc21454 2023-07-14 jrmu {
10 5dc21454 2023-07-14 jrmu char c; unsigned char uc;
11 5dc21454 2023-07-14 jrmu short s; unsigned short us;
12 5dc21454 2023-07-14 jrmu int i; unsigned int ui;
13 5dc21454 2023-07-14 jrmu long l; unsigned long ul;
14 5dc21454 2023-07-14 jrmu long long ll; unsigned long long ull;
15 5dc21454 2023-07-14 jrmu int cwidth, swidth, iwidth, lwidth, llwidth;
16 5dc21454 2023-07-14 jrmu for (c = 1, cwidth = 1; c > 0; c <<= 1, ++cwidth)
17 5dc21454 2023-07-14 jrmu ;
18 5dc21454 2023-07-14 jrmu for (s = 1, swidth = 1; s > 0; s <<= 1, ++swidth)
19 5dc21454 2023-07-14 jrmu ;
20 5dc21454 2023-07-14 jrmu for (i = 1, iwidth = 1; i > 0; i <<= 1, ++iwidth)
21 5dc21454 2023-07-14 jrmu ;
22 5dc21454 2023-07-14 jrmu for (l = 1, lwidth = 1; l > 0; l <<= 1, ++lwidth)
23 5dc21454 2023-07-14 jrmu ;
24 5dc21454 2023-07-14 jrmu for (ll = 1, llwidth = 1; ll > 0; ll <<= 1, ++llwidth)
25 5dc21454 2023-07-14 jrmu ;
26 5dc21454 2023-07-14 jrmu printf("CHAR_WIDTH: %d\n", cwidth);
27 5dc21454 2023-07-14 jrmu printf("SCHAR_MIN: %d\n", SCHAR_MIN);
28 5dc21454 2023-07-14 jrmu printf("SCHAR_MIN: %d\n", c);
29 5dc21454 2023-07-14 jrmu printf("SCHAR_MAX: %d\n", SCHAR_MAX);
30 5dc21454 2023-07-14 jrmu printf("SCHAR_MAX: %d\n", c^-1);
31 5dc21454 2023-07-14 jrmu printf("UCHAR_MAX: %d\n", UCHAR_MAX);
32 5dc21454 2023-07-14 jrmu printf("UCHAR_MAX: %u\n", (unsigned char)-1);
33 5dc21454 2023-07-14 jrmu printf("CHAR_MIN: %d\n", CHAR_MIN);
34 5dc21454 2023-07-14 jrmu printf("CHAR_MIN: %d\n", c);
35 5dc21454 2023-07-14 jrmu printf("CHAR_MAX: %d\n", CHAR_MAX);
36 5dc21454 2023-07-14 jrmu printf("CHAR_MAX: %d\n", c^-1);
37 5dc21454 2023-07-14 jrmu printf("SHRT_WIDTH: %d\n", swidth);
38 5dc21454 2023-07-14 jrmu printf("USHRT_MAX: %d\n", USHRT_MAX);
39 5dc21454 2023-07-14 jrmu printf("USHRT_MAX: %d\n", (unsigned short)-1);
40 5dc21454 2023-07-14 jrmu printf("SHRT_MIN: %d\n", SHRT_MIN);
41 5dc21454 2023-07-14 jrmu printf("SHRT_MIN: %d\n", s);
42 5dc21454 2023-07-14 jrmu printf("SHRT_MAX: %d\n", SHRT_MAX);
43 5dc21454 2023-07-14 jrmu printf("SHRT_MAX: %d\n", s^-1);
44 5dc21454 2023-07-14 jrmu printf("INT_WIDTH: %d\n", iwidth);
45 5dc21454 2023-07-14 jrmu printf("UINT_MAX: %u\n", UINT_MAX);
46 5dc21454 2023-07-14 jrmu printf("UINT_MAX: %u\n", (unsigned)-1);
47 5dc21454 2023-07-14 jrmu printf("INT_MIN: %d\n", INT_MIN);
48 5dc21454 2023-07-14 jrmu printf("INT_MIN: %d\n", i);
49 5dc21454 2023-07-14 jrmu printf("INT_MAX: %d\n", INT_MAX);
50 5dc21454 2023-07-14 jrmu printf("INT_MAX: %d\n", i^-1);
51 5dc21454 2023-07-14 jrmu printf("LONG_WIDTH: %d\n", lwidth);
52 5dc21454 2023-07-14 jrmu printf("LONG_MIN: %ld\n", LONG_MIN);
53 5dc21454 2023-07-14 jrmu printf("LONG_MIN: %ld\n", l);
54 5dc21454 2023-07-14 jrmu printf("LONG_MAX: %ld\n", LONG_MAX);
55 5dc21454 2023-07-14 jrmu printf("LONG_MIN: %ld\n", l^-1);
56 5dc21454 2023-07-14 jrmu printf("ULONG_MAX: %lu\n", ULONG_MAX);
57 5dc21454 2023-07-14 jrmu printf("ULONG_MAX: %lu\n", (unsigned long)-1);
58 5dc21454 2023-07-14 jrmu printf("LLONG_WIDTH: %d\n", llwidth);
59 5dc21454 2023-07-14 jrmu printf("ULLONG_MAX: %llu\n", ULLONG_MAX);
60 5dc21454 2023-07-14 jrmu printf("ULLONG_MAX: %llu\n", (unsigned long long)-1);
61 5dc21454 2023-07-14 jrmu printf("LLONG_MIN: %lld\n", LLONG_MIN);
62 5dc21454 2023-07-14 jrmu printf("LLONG_MIN: %lld\n", ll);
63 5dc21454 2023-07-14 jrmu printf("LLONG_MAX: %lld\n", LLONG_MAX);
64 5dc21454 2023-07-14 jrmu printf("LLONG_MIN: %lld\n", ll^-1);
65 5dc21454 2023-07-14 jrmu }
66 5dc21454 2023-07-14 jrmu /*
67 5dc21454 2023-07-14 jrmu char_min
68 5dc21454 2023-07-14 jrmu 0
69 5dc21454 2023-07-14 jrmu (~0)
70 5dc21454 2023-07-14 jrmu 00000000 0
71 5dc21454 2023-07-14 jrmu 00000001 1
72 5dc21454 2023-07-14 jrmu 11111110 -2
73 5dc21454 2023-07-14 jrmu 11111111 -1
74 5dc21454 2023-07-14 jrmu 10000000 -256
75 5dc21454 2023-07-14 jrmu 01111111 +255
76 5dc21454 2023-07-14 jrmu
77 5dc21454 2023-07-14 jrmu
78 5dc21454 2023-07-14 jrmu min is
79 5dc21454 2023-07-14 jrmu 100000001
80 5dc21454 2023-07-14 jrmu max is
81 5dc21454 2023-07-14 jrmu 011111111
82 5dc21454 2023-07-14 jrmu (~0)+1
83 5dc21454 2023-07-14 jrmu */