考慮下面的程序:爲什麼int和uint比較在一種情況下失敗,而在另一種情況下不能?
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();
}
上述程序的輸出是:
Doesn't match
Matches
爲什麼當整數的未經檢查的轉換-1至無符號整數是0xFFFFFFFF的第一比較失敗? (而第二個通過)
不,是爲0xFFFFFFFF一個uint值...只是嘗試:'0xFFFFFFFF.GetType()。Name' – 2010-03-05 13:33:18
@Thomas:好的,你說得對。重點是:它不是int ...編輯 – tanascius 2010-03-05 13:36:07
在i == 0xFFFFFFFF上有一個編譯器警告,說「比較到整數值沒用,常量在int的範圍之外」。所以@tanascius說。 – btlog 2010-03-05 14:09:31