вроде все просто, код: #include <stdio.h> typedef struct{ unsigned short int sign; unsigned int size; } header; int main(int argc, char *argv[]){ fprintf(stderr, "%d\n", sizeof(unsigned short int)); fprintf(stderr, "%d\n", sizeof(unsigned int)); fprintf(stderr, "%d\n", sizeof(header)); exit(0); } в результате получаю: 2 4 8 почему??