Uma união ou estrutura permite a atribuição de uma instância não inicializada?

Esta pergunta é sobre a definição ou não de atribuir uma variável automática não-inicializada a outra do mesmo tipo.

Considerar

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)
    }
}

Referindo-se aos comentários emmain:

(1) é indefinido, poisa é não inicializado. Isso eu sei.

Mas e quanto a (2)? Os membros structs1 es2 são não inicializados.

Além disso, o que dizer de (3)? A memória u2.s2 não foi inicializada, portanto, a leitura é um comportamento indefinido, não?

questionAnswers(2)

yourAnswerToTheQuestion