title: Why does pointer subtraction in C yield an integer?
body: <p>Why if I subtract from a pointer another pointer (integer pointers) without typecasting the result will be 1 and not 4 bytes (like it is when I typecast to int both pointers). Example :</p>
  
  <pre><code>int a , b , *p , *q;
  p = &amp;b;
  q = p + 1; // q = &amp;a;
  printf("%d",q - p); // The result will be one .
  printf("%d",(int)q - (int)p); // The result will be 4(bytes). The memory address of b minus The memory address of a.
  </code></pre>