Присвоение значения битовому полю длиной 1

Предположим, у меня есть

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

Если у меня есть

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

two будет содержать0в своих областях, в то время какthree будет содержать1s. Таким образом, это заставляет меня думать, что присвоение номера одиночному битовому полю получает младший значащий бит (2 является10 в двоичном и3 является11).

Итак, мой вопрос - это правильно и кроссплатформенно? Или это зависит от машины, от компилятора и т. Д. Говорит ли стандарт об этом что-нибудь или его реализация полностью определена?

Note: The same result may be achieved by assigning 0 and 1, instead of 2 and 3 respectively. I used 2 and 3 just for illustrating my question, I wouldn't use it in a real-world situation

P.S. And, yes, I'm interesting in both - C and C++, please don't tell me they are different languages, because I know this :)

Ответы на вопрос(1)

Ваш ответ на вопрос