Посмотрите на этот код на C:
int main()
{
unsigned int y = 10;
int x = -2;
if (x > y)
printf("x is greater");
else
printf("y is greater");
return 0;
}
/*Output: x is greater.*/
Я понимаю, почему вывод x больше, потому что, когда компьютер сравнивает оба из них, x продвигается до целого числа без знака. Когда x продвигается до целых чисел без знака, -2 становится 65534, который определенно больше 10.
Но почему в С# эквивалентный код дает противоположный результат?
public static void Main(String[] args)
{
uint y = 10;
int x = -2;
if (x > y)
{
Console.WriteLine("x is greater");
}
else
{
Console.WriteLine("y is greater");
}
}
//Output: y is greater.