Atribuindo um valor ao campo de bits com comprimento 1

Suponha que eu tenha

struct A
{
    signed char a:1;
    unsigned char b:1;
};

Se eu tiver

A two, three;
two.a = 2; two.b = 2;
three.a = 3; three.b = 3;

two conterá0s em seus campos, enquantothree conterá1s. Então, isso me faz pensar, que atribuir um número a um campo de bit único obtém o bit menos significativo (2 é10 em binário e3 é11).

Então, minha pergunta é - isso é correto e multi-plataforma? Ou isso depende da máquina, do compilador, etc. O padrão diz algo sobre isso, ou é completamente definido pela implementação?

Nota: O mesmo resultado pode ser alcançado atribuindo-se0 e1, ao invés de2 e3 respectivamente. eu usei2 e3 apenas para ilustrar minha pergunta, eu não usaria isso em uma situação do mundo real

P.S. E, sim, eu sou interessante em ambos -C eC++, por favor não me diga que são línguas diferentes, porque eu sei disso :)

questionAnswers(1)

yourAnswerToTheQuestion