Если у меня есть союз, стандарт C гарантирует, что сам союз будет выровнен по размеру самого большого элемента.
union U {
long l;
int i;
short s;
char c[2];
} u;
Но что он говорит о выравнивании отдельных элементов союза внутри союза? Допустимо ли следующее выражение:
(&u.l == &u.i) && (&u.i == &u.s) && (&u.s == &u.c[0])