title: Why size_t when int would suffice for the size of an array?
body: <p>The C standard guarantees that an <code>int</code> is able to store every possible array size. At least, that's what I understand from reading §6.5.2.1, subsection 1 (Array subscripting constraints):</p>
  
  <blockquote>
    <p>One of the expressions shall have type ‘‘pointer to object type’’, the other expression shall
    have integer type, and the result has type ‘‘type’’.</p>
  </blockquote>
  
  <p>Since we shall use <code>int</code>s as array subscripts, why are we supposed to use <code>size_t</code> to determine the size of an array?</p>
  
  <p>Why does <code>strlen()</code> return <code>size_t</code> when <code>int</code> would suffice?</p>