【C#每日一帖】給變量賦常量值的編譯錯誤解決

short x = -1;
x = 0xffff;
對於上面寫出的代碼,在VS2008下C#語言下有錯誤嗎?
回答是「有的」,第二行代碼會出現編譯錯誤:
常量值「65535」沒法轉換爲「short」。

在VS2008下(x86),常量值默認是int型,也就是32位數值類型,直接把它賦值給short型變量是行不通的。
那麼,咱們給它增強制轉換會怎麼樣呢?
編譯仍然通不過,不過提示稍微有了變化:
常量值「65535」沒法轉換爲「short」(使用「 unchecked 」語法重寫)。

這種錯誤如何避免呢?這裏,咱們經過提示瞭解到,須要借用 unchecked 關鍵字來避免此類狀況。
那這個關鍵字怎麼用呢?仍是請教MSDN這位老師吧。
先來了解下, unchecked  關鍵字的做用:

unchecked 關鍵字用於取消整型算術運算和轉換的溢出檢查。c#

/// 用法1
 unchecked
{
    int val = 2147483647 * 2;
}


/// 用法2
public int UncheckedAdd(int a, int b)
{
    return unchecked(a + b);
}
好了,知道這個關鍵字怎麼用了,那就給咱們的代碼動個小手術吧。

改爲以下代碼便可編譯經過,不要猶豫了,趕忙試試吧!spa

unchecked
{
short x = -1;
x = (short)0xffff;
}
相關文章
相關標籤/搜索