Padding. I can't remember the exact details but the struct will be 4 (?) byte aligned. So the compiler will pack the items into four byte chunks, the int fits into one chunk and the char along with 3 bytes of padding fits into the other.
Edit:
it is worth keeping an eye on the order you declare elements as well:
But beware that the alignment can matter with some computer architectures; with Intel it just has a performance impact, but on some architectures (e.g. ARM) it can cause memory alignment violations.
In general you should use default packing for a given architecture unless you have good reason not to.
One reason is large arrays. But with the memory available to modern computers this is much less an issue than it used to be.