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.
5 5dc21454 2023-07-14 jrmu #include <stdio.h>
6 5dc21454 2023-07-14 jrmu #include <limits.h>
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)
18 5dc21454 2023-07-14 jrmu for (s = 1, swidth = 1; s > 0; s <<= 1, ++swidth)
20 5dc21454 2023-07-14 jrmu for (i = 1, iwidth = 1; i > 0; i <<= 1, ++iwidth)
22 5dc21454 2023-07-14 jrmu for (l = 1, lwidth = 1; l > 0; l <<= 1, ++lwidth)
24 5dc21454 2023-07-14 jrmu for (ll = 1, llwidth = 1; ll > 0; ll <<= 1, ++llwidth)
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);
74 5dc21454 2023-07-14 jrmu 10000000 -256
75 5dc21454 2023-07-14 jrmu 01111111 +255