title: size_t divided by int type conversion rules
body: <p>When I am doing arithmetic operations with size_t type (or unsigned long), how careful should I be with decorating integer constants with type literals. For example,</p>
  
  <pre><code>size_t a = 1111111;
  if (a/2 &gt; 0) ...;
  </code></pre>
  
  <p>What happens when compiler does the division? Does it treat 2 as integer or as unsigned integer? If the former, then what is the resulting type for (unsigned int)/(int)?</p>
  
  <p>Should I always carefully write 'u' literals</p>
  
  <pre><code>if (a/2u &gt; 0) ...;
  for (a=amax; a &gt;= 0u; a -= 3u) ...;
  </code></pre>
  
  <p>or compiler will correctly guess that I want to use operations with unsigned integers?</p>