title: Is the integer width relevant in bitfield declaration?
body: <p>I was trying to find a reason why I should not write</p>
  
  <pre><code>struct bitfield {
    signed foo:4;
    unsigned bar:2;
  };
  </code></pre>
  
  <p>instead of specifying verbosely</p>
  
  <pre><code>struct bitfield {
    signed int foo:4;   
    unsigned int bar:2; 
  };
  </code></pre>
  
  <p>As the size of each member of the bitfield is explicitly specified after the colon, could there be any drawbacks? </p>
  
  <p>Does it matter if I use <code>char</code>, <code>short</code>, <code>long</code>, <code>long long</code>? Must the number of specified bitfield bits probably always be smaller than the width of the declaration type?</p>
  
  <hr>
  
  <p>Found some related questions:</p>
  
  <ul>
  <li><a href="https://stackoverflow.com/q/2280492/1025391">Bit-fields of type other than int?</a></li>
  <li><a href="https://stackoverflow.com/q/9213622/1025391">What is the use of declaring different datatypes inside bitfields?</a></li>
  </ul>
  
  <p>The answers range from </p>
  
  <ul>
  <li>don't use any other type than (signed/unsigned) <code>int</code> or <code>_Bool</code> and</li>
  <li><code>_Bool</code>, <code>signed int</code>, <code>unsigned int</code>, or some other implementation-defined type. (C99 6.2.7.1 (4) )</li>
  </ul>
  
  <p>In this context: what may this unspecific <em>some other implementation-defined type</em> be like, and what other drawbacks may arise from my choice in this place?</p>