title: Multiplying char and int together in C
body: <p>Today I found the following:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  int main(){
  char x = 255;
  int z = ((int)x)*2;
  
  printf("%d\n", z); //prints -2
  
  return 0;
  
  }
  </code></pre>
  
  <p>So basically I'm getting an overflow because the size limit is determined by the operands on the right side of the = sign??</p>
  
  <p>Why doesn't casting it to int before multiplying work?</p>
  
  <p>In this case I'm using a char and int, but if I use "long" and "long long int" (c99), then I get similar behaviour. Is it generally advised against doing arithmetic with operands of different sizes?</p>