title: uint32_t vs uint_fast32_t vs uint_least32_t
body: <p>I saw different types of definition of an integer in <code>stdint.h</code>. I'll take unsigned 32-bit integer as an example. </p>
  
  <ol>
  <li><p><code>uint32_t</code> means clearly an unsigned integer of 32 bits. That's the one I always use.</p></li>
  <li><p><code>uint_fast32_t</code> and <code>uint_least32_t</code> : What's the difference with <code>uint32_t</code> and when should I use them instead of <code>uint32_t</code> ? </p></li>
  </ol>
  
  <p>And now, I saw <code>uintX_t</code> where X is 24, 40, 48 and 56. It happens in my code that I have to work with 48 and 56-bit integers. As an example, I suppose <code>uint24_t</code> is define as something like this :</p>
  
  <pre><code>struct uint24_t { unsigned int the_integer : 24; };
  </code></pre>
  
  <p>Am I right ? And, Will you suggest me to use <code>uint48_t</code> for my 48-bit unsigned integers or should I use the normal <code>uint64_t</code> ?</p>
  
  <p>Thanks for your explanations.</p>