Почему sizeof определяет размер структуры равным 4 байта

Hello All,
---------------------(прог-а и рез-т)struct test
{
__int8 a1;
__int16 a2;
};
void main(void)
{
printf("%d",sizeof(test));
}
......................................................
Результат работы программы:
4
По идее д.б. результат 3, но sizeof возвращает 4,
как-будто в структуре два 16-и битных integer'а !
Объясните пожалуйста почему так???
Здравствуйте !
Потому что, наверно, в проекте стоит по умолчанию
выравнивание членов структур в 8 байт (или, в 4 или в 2).
Если установить выравнивание в 1, то будет определяться
размер 3.
В VC выравнивание можно задать :
в меню Project/Settings...
вкладка C/C++ выбрать в комбобоксе Category "Code Generation"
В комбобоксе Struct member alignment выбрать 1.
Надо только удалить двоичные файлы и перекомпилить заново
(а то там с PCH конфликт будет).
--
С уважением, Вахтуров Виктор.
Номер выпуска : 3382
Возраст листа : 289 (дней)
Количество подписчиков : 432
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/185535
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Адрес подписки:
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписать: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru