avr39ripe

BV024structSizeUnionMadness

Jan 28th, 2021
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. //struct Test
  4. //{
  5. //  uint8_t     f1; //1
  6. //  uint16_t    f2; //2 [][][][]
  7. //  uint8_t     f3; //1 [][][][]
  8. //  uint32_t    f4; //4 [][][][]
  9. //  uint8_t     f5; //1 [][][][]
  10. //                  //9
  11. //};
  12. //  0           4       7   8           16
  13. //  ([][][][])  ([][][][])  ([][][][])  ([][][][])
  14.  
  15. struct Test
  16. {
  17.     uint8_t     f5; //1
  18.     uint8_t     f1; //1
  19.     uint8_t     f3; //1 [5][*][*][*]
  20.     uint16_t    f2; //2 [*][*][*][*]
  21.     uint32_t    f4; //4 [4][4][4][4]
  22.                     //9
  23. };
  24.  
  25. union Buffer
  26. {
  27.     uint8_t bytes[4];
  28.     uint16_t words[2];
  29.     uint32_t buffer;
  30. };
  31.  
  32.  
  33. int main()
  34. {
  35.     Buffer buf;
  36.     buf.bytes[0] = 0;
  37.     buf.bytes[1] = 0;
  38.     buf.bytes[2] = 0;
  39.     buf.bytes[3] = 0;
  40.  
  41.     std::cout << buf.words[0] << '\n';
  42.     std::cout << buf.words[1] << '\n';
  43.  
  44.     buf.words[0] = 65535;
  45.     buf.words[1] = 65535;
  46.  
  47.     std::cout << (int)buf.bytes[0] << '\n';
  48.     std::cout << (int)buf.bytes[1] << '\n';
  49.     std::cout << (int)buf.bytes[2] << '\n';
  50.     std::cout << (int)buf.bytes[3] << '\n';
  51.  
  52.  
  53.     //std::cout << "sizeof(Test) = " << sizeof(Test) << '\n';
  54.  
  55.     //std::cout << "sizeof(uint8_t) = " << sizeof(uint8_t) << '\n';
  56.     //std::cout << "sizeof(uint16_t) = " << sizeof(uint16_t) << '\n';
  57.     //std::cout << "sizeof(uint32_t) = " << sizeof(uint32_t) << '\n';
  58.  
  59.     return 0;
  60. }
  61.  
  62.  
Advertisement
Add Comment
Please, Sign In to add comment