#include struct x1 { unsigned int x; char y; }; struct x2 { unsigned int x; unsigned int y; }; void pollute(void) { struct x2 x = { .x = ~0, .y = ~0, }; } void test(void) { struct x1 x1 = { .x = 1, .y = 2, }; struct x2 *x2 = (struct x2 *)&x1; printf("%u %u\n", x2->x, x2->y); } int main(int argc, char **argv) { pollute(); test(); return 0; }