sizeof.c (1200B)
1 #if __OpenBSD__
2 #include <stdlib.h>
3 #else
4 #include <bsd/stdlib.h>
5 #endif
6
7 #include <limits.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10
11 static const char *format = "sizeof(%s) == %d bytes; %d bits\n";
12 static const char *format_m = "sizeof(%s) == %d bytes; %d bits; (MIN:MAX) == (%d:%d)\n";
13
14 static void print_size(size_t size, char *type)
15 {
16 int c;
17 c = size;
18 printf(format, type, c, c * CHAR_BIT);
19 }
20
21 int main(void)
22 {
23 int c;
24
25 printf("CHAR_BIT == %d\n", CHAR_BIT);
26
27 c = sizeof(int);
28 printf(format_m, "int", c, c * CHAR_BIT, INT_MIN, INT_MAX);
29 c = sizeof(char);
30 printf(format_m, "char", c, c * CHAR_BIT, CHAR_MIN, CHAR_MAX);
31
32 print_size(sizeof(uint8_t), "uint8_t");
33 print_size(sizeof(short), "short");
34 print_size(sizeof(double), "double");
35 print_size(sizeof(long), "long");
36 print_size(sizeof(double long), "double long");
37 print_size(sizeof(long long), "long long");
38 print_size(sizeof(long int), "long int");
39 print_size(sizeof(char[BUFSIZ]), "char[BUFSIZ]");
40 print_size(sizeof(char[256]), "char[256]");
41 print_size(sizeof(char[32]), "char[32]");
42 print_size(sizeof(char[2]), "char[2]");
43 print_size(sizeof('a'), "'a'");
44 print_size(sizeof(arc4random()), "arc4random()");
45
46 return 0;
47 }