title: void pointer = int pointer = float pointer
body: <p>I have a <code>void</code> pointer pointing to a memory address. Then, I do</p>
  
  <ul>
  <li><p><code>int</code> pointer = the <code>void</code> pointer</p></li>
  <li><p><code>float</code> pointer = the <code>void</code> pointer</p></li>
  </ul>
  
  <p>and then, dereference them go get the values.</p>
  
  <pre><code>{
      int x = 25;
  
      void   *p  = &amp;x;
      int    *pi = p;
      float  *pf = p;
      double *pd = p;
  
      printf("x: n%d\n", x);
      printf("*p: %d\n", *(int *)p);
      printf("*pi: %d\n", *pi);
      printf("*pf: %f\n", *pf);
      printf("*pd: %f\n", *pd);
  
      return 0;
  }
  </code></pre>
  
  <p>The output of dereferencing <code>pi</code>(<code>int</code> pointer) is 25. 
  However the output of dereferencing <code>pf</code>(<code>float</code> pointer) is 0.000.
  Also dereferncing <code>pd</code>(<code>double</code> pointer) outputs a negative fraction that keeps
  changing?</p>
  
  <p>Why is this and is it related to endianness(my CPU is little endian)?</p>