why does printf auto convert %x %o %d to hex oct and dec
===

Some how I thought this should have worked.

    #include<stdio.h>
    void main(void)
    {   
         short i;
         scanf("0x%hi",&i);
         printf("0x%x\n",i);
         printf("0%o\n",i);
         printf("%d\n",i);
    }
Wonder why ?Any answers , why this doesnt work. I thought this should auto do the conversion into hex oct and atleast it should print the decimal correctly

      32768
      0x26
      046
      38


Is what I get for 32768 input .
