我正在尝试学习Eabout C++,并在国际象棋程序中遇到一些我需要帮助理解的代码。我有一个工会,如: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从在内部,发生了什么事?我对C++相当陌生。试图把我的头围绕着工会在内部工作。
非常感谢任何见解。
大卫
甜。我实际上已经想出了如何通过>> 32得到“高”,但不知道“l”部分。你为我节省了很多时间。非常感谢。 –
我一直想知道为什么它是“e”的“endian”。 –