title: Fixed width, minimum width and fastest minimum width unsigned 8 bit integer
body: <p>Three days back I read an <a href="http://embeddedgurus.com/stack-overflow/2008/06/efficient-c-tips-1-choosing-the-correct-integer-size/" rel="nofollow">article on choosing <code>correct integer size</code></a>. Before reading this article, I was unaware of these three keywords viz:</p>
  
  <p>1) Fixed width unsigned 8-bit integer: <code>uint8_t</code>. (Typedef's are C99 complaints)</p>
  
  <p>2) Minimum width unsigned 8-bit integer: <code>uint_least8_t</code>.</p>
  
  <p>3) Fastest minimum width unsigned 8-bit integer: <code>uint_fast8_t</code>.</p>
  
  <p>So my question are: </p>
  
  <p>1) What exactly they mean by saying "at least 8 bits wide" for <code>uint_least8_t</code> &amp; <code>uint_fast8_t</code>. For example, let's take a look at snippet of code</p>
  
  <pre><code>for(u16 i=0;i&lt;counter;i++)
  {
    Increment_Counter++;
  }
  </code></pre>
  
  <p>Here :- u16 means unsigned short.
  counter and Increment_Counter are two variables</p>
  
  <p>When the <code>counter =0xFF</code>; Increment_Counter will work fine by any type of keyword declaration.
  Now when <code>counter =0x01FF</code>; what kind of declaration should I choose? <code>uint_least8_t</code> (who guaranteed to be at least 8 bits wide) or unit16 type?</p>
  
  <p>2) How choosing <code>uint_fast8_t</code> affects the code speed.</p>
  
  <p>3) How choosing <code>uint_least8_t</code> consumes lesser data memory than unsigned char.</p>
  
  <p>I webbed my doubts but got nothing. So any help would be really appreciated.</p>
  
  <p>Thanks in advance</p>