fork(1) download
  1. #include <stdio.h>
  2. #include "stdint.h"
  3.  
  4. uint64_t get_value() {
  5. return 0x1020304050607080ULL;
  6. }
  7.  
  8. int main(void) {
  9. uint64_t value = get_value();
  10. uintptr_t addr = (uintptr_t)&value;
  11.  
  12. uint16_t u16 = *(uint16_t*)addr;
  13. uint16_t u16_2 = *(uint16_t*)&value;
  14. uint64_t u64 = (*(uint64_t*)addr) & 0xFFFF;
  15. uint16_t* ptr = (uint16_t*)&value;
  16. printf("u16 = 0x%x, u16_2 = 0x%x, u64 = 0x%lx, *ptr=0x%x\n", u16, u16_2, u64, *ptr);
  17.  
  18. printf("*ptr = 0x%x\n", *ptr);
  19. for (int i=0; i<4; ++i) {
  20. printf("*ptr = 0x%x\n", *ptr);
  21. ptr++;
  22. }
  23.  
  24. printf("value = 0x%lx\n", value);
  25.  
  26. return 0;
  27. }
  28.  
Success #stdin #stdout 0s 5660KB
stdin
Standard input is empty
stdout
u16 = 0x7080, u16_2 = 0x7080, u64 = 0x7080, *ptr=0x7080
*ptr = 0x7080
*ptr = 0xc220
*ptr = 0xe22
*ptr = 0x563d
*ptr = 0x0
value = 0x1020304050607080