title: What will be the value of strlen(str)- 1 in a 'for' loop condition when str is empty?
body: <p>I am analyzing a scenario:</p>
  
  <pre><code>char str[] = ""; // Understand
  </code></pre>
  
  <p>If I understand <code>strlen(str)</code>, it comes out to be 0. This is OK.</p>
  
  <pre><code>printf(" %d,  %ul,  %u, %d,  %ul, %u", 
      strlen(str),
      strlen(str),
      strlen(str),
      strlen(str) - 1,
      strlen(str) - 1,
      strlen(str) - 1);
  </code></pre>
  
  <p>Output is:</p>
  
  <blockquote>
    <p>0, 0l, 0, -1, 4294967295l, 4294967295</p>
  </blockquote>
  
  <p>I understand these as well.</p>
  
  <pre><code>for (int i = 0; i &lt; strlen(str) - 1; i++)
  {
  }
  </code></pre>
  
  <p>Here I don't understand what the value of <code>strlen(str) - 1</code> would be in the <code>for</code> loop condition.</p>
  
  <p><code>strlen(str) - 1</code> is giving the value 4294967295 in the for loop.
  Why is that? Why not -1?</p>