Я пытаюсь узнать больше о C++ и столкнулся с кодом в шахматной программе, и мне нужна помощь в понимании. У меня есть союз, например:
union b_union {
Bitboard b;
struct {
#if defined (BIGENDIAN)
uint32_t h;
uint32_t l;
#else
uint32_t l;
uint32_t h;
#endif
} dw;
};
Приведенный выше код попадает в условие else.
Bitboard определяется как uint64_t. Если у меня есть значение, скажем, 0x0025f780, то есть 282578800148862, и я устанавливаю union.b = 0x0025f780, тогда union.dw.l обновляется до 16843134, а union.dw.h обновляется до 65793. Первоначально l и h начинаются с 3435973836. Что произошло внутри? Я довольно новичок в C++. Просто пытаюсь понять профсоюзы, как они работают внутри.
Большое спасибо за любые идеи.
Дэйвид