#include <stdint.h>
#include <stdio.h>
typedef struct {
  uint8_t d;
  uint8_t data[2];
} struct1;
typedef struct {
  uint16_t a;
  uint8_t d;
  uint8_t data[2];
} struct2;
int main(void) {
  printf("%u\n", sizeof(struct1));
  printf("%u\n", sizeof(struct2));
  return 0;
}
I would expect struct1 to have a size of 3, and struct2 to have a size of 5. However when I run this code, I see that struct2 has a size of 6.
>./main
3
6
I guess the compiler is doing some sort of padding here, but why is struct 1 allowed to have an odd byte size but not struct 2?
