Присвоение значения битовому полю длиной 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).

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

Примечание: тот же результат может быть достигнут путем назначения0 а также1, вместо2 а также3 соответственно. я использовал2 а также3 просто для иллюстрации моего вопроса, я бы нене использовать его в реальной ситуации

Постскриптум И да, ям интересно в обоих -C а такжеC++, пожалуйста, не'не говорите мне, что это разные языки, потому что я знаю это :)

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

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