sizeof(struct) zwraca błędne wyniki

0

Witam, nie moge czegos zrozumiec mam taka strukture:

 
#define INT32 int
#define INT16 short int

struct local_file_header
{
char local_file_header_signature[4];
INT16 version_needed_to_extract;
INT16 general_purpose_bit_flag;
INT16 compression_method;
INT16 last_mod_file_time;
INT16 last_mod_file_date;
INT32 crc32;
INT32 compressed_size;
INT32 uncompressed_size;
INT16 file_name_length;
INT16 extra_field_length;
};

sizeof daje wynik:
sizeof(local_file_header) = 32

dla struktury:

 
struct local_file_header
{
char local_file_header_signature[4];
INT16 version_needed_to_extract;
INT16 general_purpose_bit_flag;
INT16 compression_method;
INT16 last_mod_file_time;
INT16 last_mod_file_date;
INT16 file_name_length;
INT16 extra_field_length;
};

sizeof(local_file_header) = 18
sizeof(int) = 4

Jak to mozliwe, zakladam ze pojawiaja sie miedzy int16 a int32 z obu stron dwa zera (nie sprawdzalem pamieci).
Ktos wie na pewno dlaczego tak sie dzieje ? Psuje mi to caly program

1 użytkowników online, w tym zalogowanych: 0, gości: 1