Why does casting a NaN to a long yeild a valid result?
        Posted  
        
            by brainimus
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by brainimus
        
        
        
        Published on 2010-04-14T18:10:37Z
        Indexed on 
            2010/04/14
            18:13 UTC
        
        
        Read the original article
        Hit count: 261
        
c#
In the sample code below I am dividing by zero which when I step through it with the debugger the (dividend / divisor) yeilds 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?
double divisor = 0;
double dividend = 7;
long result = (long)(dividend / divisor);
        © Stack Overflow or respective owner