1 #include <stdio.h>
2
3
4 struct st_table {
5 unsigned int entries_packed : 1;
6 unsigned int num_entries : 31;
7 };
8
9
10 /*
11 * 08/04/09: The ++ operator didn't work for bitfields
12 */
13 int
main()14 main() {
15 struct st_table s;
16
17 s.entries_packed = 0;
18 s.num_entries = 127;
19
20 printf("%d\n", !s.num_entries);
21 printf("%d\n", !!s.num_entries);
22 printf("%d\n", !!!s.num_entries);
23
24 /*
25 * Now check that other members in the storage unit do not
26 * affect the outcome
27 */
28 s.entries_packed = 1;
29 printf("%d\n", !s.num_entries);
30 printf("%d\n", !!s.num_entries);
31 printf("%d\n", !!!s.num_entries);
32
33 printf("%d\n", !s.entries_packed);
34 printf("%d\n", !!s.entries_packed);
35 printf("%d\n", !!!s.entries_packed);
36
37 s.num_entries = 0;
38
39 printf("%d\n", !s.entries_packed);
40 printf("%d\n", !!s.entries_packed);
41 printf("%d\n", !!!s.entries_packed);
42 }
43
44
45