Dlaczego tak
Wszystkie pola unii zaczynają się pod tym samym adresem i dzielą tę samą pamięć, więc unia zajmuje tyle, ile jej największe pole z uwzględnieniem wyrównania — tu double, 8 bajtów. W danej chwili sensowną wartość ma tylko pole zapisane jako ostatnie. Wynik 13 to suma rozmiarów pól, a 16 to rozmiar struktury z tymi polami po wyrównaniu do 8 bajtów — tak liczy się pamięć struktury, a nie unii.