title: Unexpected result when doing subtraction of addresses of array elements
body: <p>I am on a x32-based processor where <code>char = 1 byte, short = 2 bytes and int = 4 bytes</code>.</p>
  <p>When I create an array of type <code>char</code> with <code>20</code> elements in it, I expect to see 20 memory spaces allocated to that array with the addresses differing by only <code>1 byte</code> because of the type of the array.</p>
  <p>If I take two consecutive elements from the array and subtract their addresses, should I then not get <code>1</code> in this case?</p>
  <p>And in the case of arrays with types <code>short</code> and <code>int</code>, I am expecting to get <code>2</code> and <code>4</code>. This due to the fact that the <code>short</code> and <code>int</code> elements need be aligned in memory. <code>short elements</code> will be on even addresses (diff 2) and <code>int elements</code> will be on addresses divisible by 4.</p>
  <p>Though, how come when I run the following code I get <code>1,1,1</code> and not <code>1,2,4</code>?</p>
  <p>I suspect I am missing some cruical detail when it comes to pointer arithmetics.</p>
  <pre><code>char vecc[20];
  printf(&quot;%i\n&quot;, &amp;vecc[1]-&amp;vecc[0]);
      
  short vecs[20];
  printf(&quot;%i\n&quot;, &amp;vecs[1]-&amp;vecs[0]);
      
  int veci[20];
  printf(&quot;%i\n&quot;, &amp;veci[1]-&amp;veci[0]);
  </code></pre>