При работе с битовыми полями нужно внимательно следить за тем, чтобы значение переменной не потребовало памяти больше, чем под неё выделено.
Пример Разработать программу, осуществляющую упаковку даты в формат

#include <stdio.h>
#include <stdlib.h>
#define YEAR0 1980
struct date
{
unsigned short day :5;
unsigned short month :4;
unsigned short year :7;
};
int main() {
struct date today;
system("chcp 1251");
system("cls");
today.day =16;
today.month = 12;
today.year = 2013 - YEAR0; //today.year = 33
printf("\n Сегодня %u.%u.%u \n", today.day, today.month, today.year+YEAR0);
printf("\n Размер структуры today: %d байт", sizeof(today));
printf("\n Значение элемента today = %hu = %hx шестн.", today, today)
getchar();
return 0;
}
Результат выполнения
