Adding two unsigned char variables and result is int
<p>There is code:</p>

<pre><code>#include &lt;iostream&gt;
int main(){
  unsigned char a = 4, b = 255;
  int g = (unsigned char)a + (unsigned char)b;
  std::cout &lt;&lt; g &lt;&lt; std::endl;
  return 0;
}
</code></pre>

<p>Result:</p>

<pre><code>259
</code></pre>

<p>Why the result is 259, not 3? If there are added two unsigned char variables, there should be overflow, result should be 3 and then it should convert from unsigned char 3 to int 3.</p>
