title: Would this union work if char had stricter alignment requirements than int?
body: <p>Recently I came across the following snippet, which is an attempt to ensure all bytes of <code>i</code> (nad no more) are accessible as individual elements of <code>c</code>:</p>
  
  <pre><code>union {
    int i;
    char c[sizeof(int)];
  };
  </code></pre>
  
  <p>Now this seems a good idea, but I wonder if the standard allows for the case where the alignment requirements for <code>char</code> are more restrictive than that for <code>int</code>.</p>
  
  <p>In other words, is it possible to have a four-byte int which is required to be aligned on a four-byte boundary with a one-byte <code>char</code> (it is one byte, by definition, see below) required to be aligned on a sixteen-byte boundary?</p>
  
  <p>And would this stuff up the use of the union above?</p>
  
  <p>Two things to note.</p>
  
  <ol>
  <li><p>I'm talking specifically about what the standard allows here, not what a sane implementor/architecture would provide.</p></li>
  <li><p>I'm using the term "byte" in the ISO C sense, where it's the width of a <code>char</code>, not necessarily 8 bits.</p></li>
  </ol>