Có một cái nhìn tại mã này C:int xúc tiến để int unsigned trong C và 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.*/
Tôi hiểu tại sao sản lượng là x là lớn hơn, bởi vì khi máy tính so sánh cả trong số họ, x được thăng chức một loại số nguyên không dấu. Khi x được thăng lên số nguyên không dấu, -2 trở thành 65534, chắc chắn lớn hơn 10.
Nhưng tại sao trong C#, mã tương đương có cho kết quả ngược lại không?
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.
Vì C# tốt hơn? : D – lukegravitt
Tôi vừa học được điều gì đó mới về C ngày hôm nay. Tôi phải thừa nhận tôi không thích nó. Liệu trình biên dịch, ít nhất, đưa ra một cảnh báo? –
bản sao có thể có của [unsigned int (C++) vs uint (C#)] (http://stackoverflow.com/questions/8266089/unsigned-int-c-vs-uint-c) – lukegravitt