Issues with unsigned char return value and +=
<p>I have an odd problem when using the return result of a function and the += operator.  The function is very simple, one line that fetches a unsigned char value from an array. When I use the = operator to place it into a variable, the value comes out correct.  However, using the +=, the value comes out to be garbage.</p>

<p>Here is my code:</p>

<pre><code>unsigned short value = 0;

value = this-&gt;memory-&gt;get(address) &lt;&lt; 8; //this will work
value += this-&gt;memory-&gt;get(address) &lt;&lt; 8; //this will set it to 52480 every time

unsigned char Memory::get(unsigned int address)
{
    return this-&gt;memory[address];
}
</code></pre>

<p>I figured that initializing value to zero would solve the problem; however, it does not.  Also, casting the return to unsigned short still does not solve it.</p>
