Checked and Unchecked operators don't seem to be working when
<p>1) Is <code>UNCHECKED</code> operator in effect only when expression inside <code>UNCHECKED</code> context uses an explicit cast ( such as <code>byte b1=unchecked((byte)2000);</code>  ) and when conversion to particular type can happen implicitly? I’m assuming this since the following expression throws a compile time error:</p>

<pre><code>byte b1=unchecked(2000); //compile time error
</code></pre>

<p>2) a) Do <code>CHECKED</code> and <code>UNCHECKED</code> operators work only when resulting value of an expression or conversion is of an <code>integer</code> type? I’m assuming this since in the first example ( where <code>double</code> type is being converted to <code>integer</code> type ) <code>CHECKED</code> operator works as expected:</p>

<pre><code>        double m = double.MaxValue;
        b=checked((byte)m); // reports an exception
</code></pre>

<p>, while in second example ( where <code>double</code> type is being converted to a <code>float</code> type ) <code>CHECKED</code> operator doesn’t seem to be working. since it doesn't throw an exception:</p>

<pre><code>        double m = double.MaxValue;
        float f = checked((float)m); // no exception thrown
</code></pre>

<p>b) Why don’t the two operators also work with expressions where type of a resulting value is of <code>floating-point type</code>?</p>

<p>2) Next quote is from Microsoft’s site:</p>

<blockquote>
  <p>The unchecked keyword is used to control the overflow-checking context for integral-type arithmetic operations and conversions</p>
</blockquote>

<p>I’m not sure I understand what exactly  have expressions and conversions such as <code>unchecked((byte)(100+200));</code> in common with <code>integrals</code>?   </p>

<p>Thank you</p>
