Присвоение значения битовому полю длиной 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
).
Итак, мой вопрос - это правильно и кроссплатформенно? Или это зависит от машины, от компилятора и т. Д. Говорит ли стандарт об этом что-нибудь или его реализация полностью определена?
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 :)