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