Przypisanie wartości do pola bitowego o długości 1

Przypuśćmy, że mam

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

Jeżeli mam

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

two będzie zawierać0s na swoich polachthree będzie zawierać1s. To sprawia, że ​​myślę, że przypisanie liczby do pola jednobitowego ma najmniej znaczący bit (2 jest10 w formacie binarnym i3 jest11).

Więc moje pytanie brzmi - czy jest to poprawne i wieloplatformowe? Lub zależy to od komputera, kompilatora itp. Czy standard mówi coś o tym, czy też jest całkowicie zdefiniowany?

Uwaga: Ten sam wynik można osiągnąć, przypisując0 i1, zamiast2 i3 odpowiednio. użyłem2 i3 po prostu dla zilustrowania mojego pytania, nie używałbym go w rzeczywistej sytuacji

P.S. I tak, jestem ciekawy w obu -C iC++, proszę nie mów mi, że są różnymi językami, bo to wiem :)

questionAnswers(1)

yourAnswerToTheQuestion