title: Why is a cast required for byte subtraction in C#?
body: <p>I have to following code in VS2008 .net 3.5 using WinForms:</p>
  
  <pre><code>byte percent = 70;
  byte zero = 0;
  
  Bitmap copy = (Bitmap)image1.Clone();
  ...
  
  Color oColor = copy.GetPixel(x, y);
  byte oR = (byte)(oColor.R - percent &lt; zero ? zero : oColor.R - percent);
  </code></pre>
  
  <p>When I leave the "<strong><code>(byte)</code></strong>" off the last line of code, I get a compiler error saying it "Cannot implicitly convert type '<code>int</code>' to '<code>byte</code>'." If everything is of type <code>byte</code> and <code>byte</code> is an integer type... then why do I need to have the cast?</p>