#include <stdint.h> #include <iostream> using namespace std; typedef struct { uint8_t a :6; uint8_t b :1; uint8_t c :1; } Test1; typedef struct { uint8_t a; uint8_t b; uint8_t c; } Test2; typedef union { struct { uint8_t a :6; uint8_t b :1; uint8_t c :1; } bits; uint8_t full; } Test3; int main() { Test3 test3; cout << sizeof(Test1) << endl; cout << sizeof(Test2) << endl; cout << sizeof(Test3) << endl; test3.bits.a = 0; test3.bits.b = 0; test3.bits.c = 0; cout << "Test3 inited:" << endl << (int)test3.bits.a << endl << (int)test3.bits.b << endl << (int)test3.full << endl; test3.bits.a = 0xff; cout << "Test3.bits.a loaded with 255:" << endl << (int)test3.bits.a << endl << (int)test3.bits.b << endl << (int)test3.full << endl; test3.bits.a = 0x0; test3.bits.b = 0xff; cout << "Test3.bits.b loaded with 255:" << endl << (int)test3.bits.a << endl << (int)test3.bits.b << endl << (int)test3.full << endl; }
The output looks like this (depending on machine endianness)
1 3 1 Test3 inited: 0 0 0 Test3.bits.a loaded with 255: 63 0 252 Test3.bits.b loaded with 255: 0 1 2
No comments:
Post a Comment