Предположим, у меня есть союз u с двумя членами a
и b
того же типа (например, int).Члены союза того же типа
union u{
int a,b;
char c;
};
Если я пишу a
, передать его в функцию по значению, а функция считывает из b
, ожидая, чтобы получить значение a
, будет ли какие-либо вопросы, учитывая a
и b
имеют одинаковый тип? Нужно ли чтению членов, чтобы точно записывать записи члена?
C11 draft N1548 может сказать, что проблем не возникнет. Я не могу точно сказать. Все еще чтение. Сноска: «95) Если элемент, используемый для чтения содержимого объекта объединения, не совпадает с элементом, который последний раз использовался для , сохраните значение в объекте, соответствующая часть представления объекта значения будет переинтерпретирована as представление объекта в новом типе, как описано в 6.2.6 (процесс, иногда называемый «тип punning»). Это может быть ловушка. – Ryan