聯合體類型,變量成員共用同一內存,同一時刻只能保存一個成員的數據。
以1個4字節數據,傳遞r\g\b爲例
#include<stdint.h> #include<iostream> int main() { uint32_t myV; //用於模擬值傳遞 //寫 { union { struct { uint32_t r : 8; //注意與“要傳遞的值”同類型,防止新開闢1個字節造成的位不連續 uint32_t g : 8; uint32_t b : 8; }_s; uint32_t v = 0; //要傳遞的值 }_u; _u._s.r = 120; _u._s.g = 130; _u._s.b = 140; std::cout << _u.v << std::endl; myV = _u.v; } //讀 { union { struct { uint32_t myR : 8; uint32_t myG : 8; uint32_t myB : 8; }myS; uint32_t rgb = 0; }myU; //模擬值傳遞 myU.rgb = myV; //獲取r\g\b unsigned char r1 = myU.myS.myR; unsigned char g1 = myU.myS.myG; unsigned char b1 = myU.myS.myB; std::cout << (int)r1 << " " << (int)g1 << " " << (int)b1 << std::endl; } }