Why does the int and uint comparison fails in one case but not in another?
.net, c#
Solution
Your first comparison will be based on longs ... since 0xFFFFFFFF is not an int value :) Try to write
Console.WriteLine( (long)i == 0xFFFFFFFF ? "Matches" : "Doesn't match" );
and you will get a `cast is redundant` message
Problem
Consider following program: ``` static void Main (string[] args) { int i; uint ui; i = -1; Console.WriteLine (i == 0xFFFFFFFF ? "Matches" : "Doesn't match"); i = -1; ui = (uint)i; Console.WriteLine (ui == 0xFFFFFFFF ? "Matches" : "Doesn't match"); Console.ReadLine (); } ``` The output of above program is: ``` Doesn't match Matches ``` Why the first comparison fails when unchecked conversion of integer -1 to unsigned integer is 0xFFFFFFFF? (While the second one passes)