<p>When is it appropriate to use an unsigned variable over a signed one? What about in a <code>for</code> loop?</p>

<p>I hear a lot of opinions about this and I wanted to see if there was anything resembling a consensus. </p>

<pre><code>for (unsigned int i = 0; i &lt; someThing.length(); i++) {  
    SomeThing var = someThing.at(i);  
    // You get the idea.  
}
</code></pre>

<p>I know Java doesn't have unsigned values, and that must have been a concious decision on <a href="https://en.wikipedia.org/wiki/Sun_Microsystems" rel="noreferrer">Sun Microsystems</a>' part. </p>

I was glad to find
a good conversation
on this subject, as I hadn't really given it much thought before.
In summary, signed is a good general choice - even when you're dead sure all the numbers are positive - if you're going to do arithmetic on the variable (like in a typical for loop case).
unsigned starts to make more sense when:
You're going to do
bitwise things
like masks, or
You're
desperate
to to take advantage of the sign bit
for that extra positive range
.
Personally, I like signed because I don't trust myself to stay consistent and avoid mixing the two types (like the article warns against).