Вот рассматриваемый код
#include <stdio.h>
struct test {
unsigned char t;
unsigned short u;
unsigned char v;
};
int main ()
{
struct test * a = (void *) 0x1000;
printf("%x %p %p\n",
sizeof(struct test),
a + sizeof(struct test),
a - sizeof(struct test));
return 0;
}
sizeof (struct test) печатает 6, поэтому я ожидал, что увидит:
6 0xffa 0x1006
Вместо этого я получаю
6 0x1024 0xfdc
В прошлый раз, когда я проверил, 0x24 или 36 не было равно 6. Это даже не совпадает ни с чем, что я могу сказать. Я в полной растерянности.
Кто-нибудь, пожалуйста, объясните мне, почему я получаю эти значения?