Offset in a struct with bit fields
If we have a struct with bit fields, then how are the subsequent members aligned in the struct? Consider the following code: struct A{ int a:1; char b; // at offset 1 }; struct B{ int a:16; int b: 17; char c; // at offset 7 }; printf("Size of A: %d\n", (int)sizeof(struct A)); printf("Offset of b in A: %d\n", (int)offsetof(struct A, b)); printf("Size of B: %d\n", (int)sizeof(struct B)); printf("Offset of c in B: %d\n", (int)offsetof(struct B, c)); Output: Size of A: 4 Offset of b in A: 1 Size of B: 8 Offset of c in B: 7 Here, in the first case, b is allocated just in the 2nd byte of the struct