где мясо и картошка в
вопрос касается определенности или иного назначения неинициализированной автоматической переменной другой переменной того же типа.
Рассмотреть возможность
typedef struct
{
int s1;
int s2;
} Foo;
typedef union
{
int u1;
Foo u2;
} Bar;
int main()
{
{
int a;
int b = a; // (1)
}
{
Foo a;
Foo b = a; // (2)
}
{
Bar a;
a.u1 = 0;
Bar b = a; // (3)
}
}
Ссылаясь на комментарии вmain
:
(1) не определено, так какa
неинициализирован. Это много я знаю.
Но как насчет (2)? Члены структурыs1
а такжеs2
неинициализированы.
Кроме того, как насчет (3)? Память u2.s2 неинициализирована, поэтому чтение ее - неопределенное поведение, нет?