Поскольку подсистемы памяти не могут извлекать любой фрагмент данных, выровненный по любому адресу.
Естественная граница фрагмента данных такова, что
address % sizeof(x) == 0
Таким образом, вам не нужно делать две выборки шины данных для элемента, который можно получить в одной выборке шины данных.
То, что __alignof возвращает выравнивание самого большого элемента, связано с тем, что если выровнять самый большой элемент, то более мелкие элементы будут упакованы в направляющие выравнивания, поскольку они, ну, в общем, меньше границ самого большого элемента .