fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct {
  5. union {
  6. struct custom {
  7. unsigned char Lower8; // al
  8. unsigned char Higher8; // ah
  9. unsigned short Middle16; // ax
  10. unsigned int Higher32; // eax
  11. } sizes;
  12. unsigned long long T64bit; // rax
  13. };
  14. } reg_t;
  15.  
  16. int main(void) {
  17. reg_t AX_REG;
  18. printf("sizeof(reg_t) == %u\n", sizeof(reg_t));
  19. AX_REG.T64bit = 0x1122334455667788;
  20. printf("Actual: 0x%08lX\n", AX_REG.T64bit);
  21. AX_REG.sizes.Higher32 = 0xDEADBEEF;
  22. printf("Actual: 0x%08lX\n", AX_REG.T64bit);
  23. AX_REG.sizes.Lower8 = 0x00;
  24. printf("Actual: 0x%08lX\n", AX_REG.T64bit);
  25. AX_REG.sizes.Higher8 = 0xFF;
  26. printf("Actual: 0x%08lX\n", AX_REG.T64bit);
  27. AX_REG.sizes.Middle16 = 0x1234;
  28. printf("Actual: 0x%08lX\n", AX_REG.T64bit);
  29. return 0;
  30. }
Success #stdin #stdout 0s 9432KB
stdin
Standard input is empty
stdout
sizeof(reg_t) == 8
Actual: 0x1122334455667788
Actual: 0xDEADBEEF55667788
Actual: 0xDEADBEEF55667700
Actual: 0xDEADBEEF5566FF00
Actual: 0xDEADBEEF1234FF00