title: Usage of uint8, uint16 etc
body: <p>Currently I am working with a code base (C, C++ mixed) targeted for a 32 bit MIPS platform. The processor is a fairly modern one [just to mention that we have a good amount of processing power and memory].</p>
  
  <p>The code base uses data types like uint8[1 byte wide unsigned  integer], uint16[2 byte wide unsigned integer], uint32[4 byte wide unsigned integer] etc.</p>
  
  <p>I know how the usage of these constructs are helpful while porting the code to different platforms. </p>
  
  <p>My questions are:</p>
  
  <ol>
  <li><p>What is the use of/benefit in using a uint16 where an uint32 will also suffice(if, there is any)?</p></li>
  <li><p>Will there be any savings in memory usage in using shorter data types (considering data alignment)?</p></li>
  <li><p>If it is to save a few bytes of memory, is it something sensible to do in modern hardware?</p></li>
  </ol>