將-1轉換爲uint將不起作用「((uint)( - 1))」解決方案?將-1轉換爲uint C#
num10 = ((uint)(-1)) >> (0x20 - num9);
錯誤: 恆值「-1」不能被轉換爲「UINT」(利用未選中語法重寫)
將-1轉換爲uint將不起作用「((uint)( - 1))」解決方案?將-1轉換爲uint C#
num10 = ((uint)(-1)) >> (0x20 - num9);
錯誤: 恆值「-1」不能被轉換爲「UINT」(利用未選中語法重寫)
的無符號整數只能表示正值。它不能代表-1。
如果要表示負值,則需要使用signed類型,如int
。
編譯器告訴你,你需要做什麼:
unchecked
{
num10 = ((uint)(-1)) >> (0x20 - num9);
}
但是,它可能不會給你你想要的結果。
使用
uint minus1 = unchecked((uint)-1);
uint num10 = (minus1) >> (0x20 - num9);
甚至更好
uint num10 = (uint.MaxValue) >> (0x20u - num9);
中查找unchecked上下文。
你確實可以有些東西類似於負數,無符號數。它們具有如下特徵:x + (-x) == 0
要建立在C#中沒有選中區域「負」 UINT,您可以改用等效(~x) + 1
這是一樣的-x
-1是無符號整數的範圍之外。 – 2013-03-17 06:03:49
錯誤消息是否不告訴您解決方案? – 2013-03-17 06:06:51