little или big — это порядок байт в пределах одного числа. Поля struct __test__ будут располагаться в памяти по порядку описания, это чётко сказано в стандарте:
Within a structure object, the non-bit-field members and the units in which bit-fields
reside have addresses that increase in the order in which they are declared.
А выравнивание? Не получится ли, что у одних два нуля добавятся после a, а у других - до?
Разве это где-то мешает? Такое описание — это compound literal, а не приведение типа. Компилер расставит всё так же, как и при объявлении обычной переменной.