我正在嘗試學習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」。 –