1 #include <stdio.h>
2 
3 int
main()4 main() {
5 	/* Check whether basic merging works with sign extension */
6 	struct foo {
7 		unsigned	x:1;
8 		unsigned	y:1;
9 		signed		z:5;
10 		signed		a:3;
11 		unsigned	b:8;
12 	} f = { 1, 0, 7, 2, -120 };
13 			struct dummy {
14 				unsigned long	x;
15 			} d = { 0 };  /* align initializer storage */
16 	struct foo f2 = { 1, 0, -7, -1, -28 };
17 			struct dummy d2 = { 0 }; /* align initializer storage */
18 	struct foo f3[] = {
19 		{ 0, 1, 2, 3, 4 },
20 		{ 1, 0, -4, 7, -74 }
21 	};
22 	int	i;
23 
24 
25 	printf("%d\n", (int)sizeof(struct foo));
26 	printf("%d, %d, %d, %d, %d\n", f.x, f.y, f.z, f.a, f.b);
27 	printf("%d, %d, %d, %d, %d\n", f2.x, f2.y, f2.z, f2.a, f2.b);
28 	printf("%d\n", (int)sizeof f3[0]);
29 	for (i = 0; i < 2; ++i) {
30 		printf("%d, %d, %d, %d, %d\n", f3[i].x, f3[i].y, f3[i].z, f3[i].a, f3[i].b);
31 	}
32 	return 0;
33 }
34 
35