title: Should you always use 'int' for numbers in C, even if they are non-negative?
body: <p>I always use <strong>unsigned int</strong> for values that should never be negative. But today I
  noticed this situation in my code:</p>
  
  <pre><code>void CreateRequestHeader( unsigned bitsAvailable, unsigned mandatoryDataSize, 
      unsigned optionalDataSize )
  {
      If ( bitsAvailable – mandatoryDataSize &gt;= optionalDataSize ) {
          // Optional data fits, so add it to the header.
      }
  
      // BUG! The above includes the optional part even if
      // mandatoryDataSize &gt; bitsAvailable.
  }
  </code></pre>
  
  <p>Should I start using <strong>int</strong> instead of <strong>unsigned int</strong> for numbers, even if they
  can't be negative?</p>