看看这个 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。
但是为什么在 C# 中,等价的代码会给出相反的结果呢?
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.