Why does casting a NaN to a long yield a valid result?
<p>In the sample code below I am dividing by zero which when I step through it with the debugger the (dividend / divisor) yields an Infinity or NaN (if the divisor is zero).  When I cast this result to a long I get a valid result, usually something like -9223372036854775808.  Why is this cast valid?  Why doesn't it stop executing (throw an exception for example) rather than assign an arbitrary value?</p>

<pre><code>double divisor = 0;
double dividend = 7;
long result = (long)(dividend / divisor);
</code></pre>
