Присвоение значения битовому полю длиной 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
будет содержать1
s. Таким образом, это заставляет меня думать, что присвоение номера одиночному битовому полю получает младший значащий бит (2
является10
в двоичном и3
является11
).
Итак, мой вопрос - это правильно и кроссплатформенно? Или это зависит от машины, от компилятора и т. Д. Стандарт говорит что-нибудь об этом илиполностью определена реализация?
Примечание: тот же результат может быть достигнут путем назначения0
а также1
, вместо2
а также3
соответственно. я использовал2
а также3
просто для иллюстрации моего вопроса, я бы нене использовать его в реальной ситуации
Постскриптум И да, ям интересно в обоих -C
а такжеC++
, пожалуйста, не'не говорите мне, что это разные языки, потому что я знаю это :)