title: Pointer dereferencing from a (char *) to (int * ) not understood in this example
body: <p>I was taking practice tests on C on a website , where i happened to see this question.
  My Doubt is explained in comments , so please read them.    </p>
  
  <pre><code>#include&lt;stdio.h&gt;
  
  int main()
  {
      int arr[3] = {2, 3, 4};  // its assumed to be stored in little-endian i.e;
                               // 2 = 00000010 00000000 00000000 00000000
                               // 3 = 00000011 00000000 00000000 00000000
                               // 4 = 00000100 00000000 00000000 00000000   
  
      char *p;
  
      p = arr;
  
      p = (char*)((int*)(p));  
  
      printf("%d ", *p);   
  
      p = (int*)(p+1);       // This casting is expected to convert char pointer p 
                             // to an int pointer , thus value at p ,now is assumed 
                             // to be equal to 00000000 00000000 00000000 00000011 
                             // but, the output was : 0  . As ,per my assumption it
                             // should be : 2^24+2^25 = 50331648 ,Please Clarify 
                             // if my assumption is Wrong and explain Why?
  
      printf("%d\n", *p);
  
      return 0;
   }
  </code></pre>