Perché l'allineamento di default è di 4 byte

Tieni presente che un allineamento ad 1 può ridurre le prestazioni complessive.

La char[6] diventa di 8, il bool di 4, ma dipende anche dall'ordine in cui poni le variabili ... senza pragma pack se avessi scritto

float imptot,costivari;
char partiva[12],data[12];
char id[6];
bool pagato;

sarebbe stato diverso