As per my knowledge, By default 4-byte alignment will be done. say
typedef struct { int data7; unsigned char data8; //3 -bytes will be added
None of the fields in your second struct require 4-byte alignment. unsigned char only needs 1-byte alignment. Therefore, there is no need to actually align it to 4 bytes.
unsigned char
Structs are generally only aligned to the maximum alignment of all the fields.