看一看這個C代碼:INT推廣在C unsigned int類型和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.
因爲C#比較好? :D – lukegravitt
我今天剛學到了一些關於C的新東西。我必須承認我不喜歡它。編譯器是否至少會發出警告? –
[unsigned int(C++)vs uint(c#)]可能的重複(http://stackoverflow.com/questions/8266089/unsigned-int-c-vs-uint-c) – lukegravitt