I am trying to understand below C program
#include <stdio.h>
//#pragma pack(1)
struct var1 {
char data1;
char arr1[10];
};
union var2 {
int data2;
char arr2[5];
};
int main(void){
printf("var1: %lu, var2: %lun", sizeof(struct var1), sizeof(union var2));
return 0;
}
The output of it
gcc-12 -Wall struct-union.c
output
var1: 11, var2: 8
Why var1 is not 12 bytes?
environment
Linux n 6.5.0-28-generic #29~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr 4 14:39:20 UTC 2 x86_64 x86_64 x86_64 GNU/Linux