title: Adding two unsigned char variables and result is int
body: <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>