fork download
  1. #include "stdio.h"
  2. int main( void ){
  3. unsigned short u = 0xaabb;
  4. unsigned int v = 0xaabb;
  5. printf ("not casted:\n");
  6. printf ("%08x %08x\n", u, ((u*0x10001)/0x100));
  7. printf ("%08x %08x\n", v, ((v*0x10001)/0x100));
  8. printf ("unsigned short casted:\n");
  9. printf ("%08x %08x\n", u, (unsigned short)((u*0x10001)/0x100));
  10. printf ("%08x %08x\n", v, (unsigned short)((v*0x10001)/0x100));
  11. printf ("u*0x10001:\n");
  12. printf ("x=%08x d=%d\n", u*0x10001, u*0x10001);
  13. // Solution
  14. printf ("Solution:\n");
  15. printf (">>> %08x %08x\n", u, (unsigned short)((u*0x10001UL)/0x100UL));
  16. printf (">>> %08x %08x\n", v, (unsigned short)((v*0x10001UL)/0x100UL));
  17. return 0;
  18. }
Success #stdin #stdout 0s 2160KB
stdin
Standard input is empty
stdout
not casted:
0000aabb ffaabbab
0000aabb 00aabbaa
unsigned short casted:
0000aabb 0000bbab
0000aabb 0000bbaa
u*0x10001:
x=aabbaabb d=-1430541637
Solution:
>>> 0000aabb 0000bbaa
>>> 0000aabb 0000bbaa