title: 3-byte int and 5-byte long?
body: <p>Does each of C and C++ standards allow <code>sizeof</code> of numeric types <em>not</em> to be a power of two?</p>
  
  <p>The following constraints are known: </p>
  
  <ul>
  <li><code>16 &lt;= CHAR_BIT * sizeof(int) &lt;=  CHAR_BIT * sizeof(long)</code></li>
  <li><code>32  &lt;=  CHAR_BIT * sizeof(long) &lt;= CHAR_BIT * sizeof(long long)</code> </li>
  <li>and a dozen of others, which on a typical 8-bit byte architecture means <code>2 &lt;= sizeof(int) &amp;&amp; 4 &lt;= sizeof(long)</code></li>
  </ul>
  
  <p>Does that mean that <code>sizeof(int) == 3 &amp;&amp; sizeof(long) == 5</code> is a valid behaviour?</p>
  
  <p>If yes - is there any known compiler/architecture behaving in a similar way?</p>