title: Strict aliasing rule in array
body: <p>Is this fragment of code a violation of strict aliasing rule:</p>
  
  <pre><code>int main()
  {
      short tab[] = {1,2,3,4};
      int* ps = (int*)(&amp;tab[0]);
      int i = *ps;
  }
  </code></pre>
  
  <p>I do know that if this was in the opposite way it would be a violation</p>
  
  <pre><code>int main()
  {
      int tab[] = {1,2,3,4};
      short* ps = (short*)(&amp;tab[0]);
      short s = *ps;
  }
  </code></pre>