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