short x = -1;
x = 0xffff;
对于上面写出的代码,在VS2008下C#语言下有错误吗?
回答是“有的”,第二行代码会出现编译错误:
常量值“65535”无法转换为“short”。
在VS2008下(x86),常量值默认是int型,也就是32位数值类型,直接把它赋值给short型变量是行不通的。
那么,我们给它加强制转换会怎么样呢?
编译仍然通不过,不过提示稍微有了变化:
常量值“65535”无法转换为“short”(使用“
unchecked
”语法重写)。
这种错误如何避免呢?这里,我们通过提示了解到,需要借用
unchecked
关键字来避免此类情况。
那这个关键字怎么用呢?还是请教MSDN这位老师吧。
先来了解下,
unchecked
关键字的作用:
unchecked 关键字用于取消整型算术运算和转换的溢出检查。
/// 用法1
unchecked
{
int val = 2147483647 * 2;
}
/// 用法2
public int UncheckedAdd(int a, int b)
{
return unchecked(a + b);
}
好了,知道这个关键字怎么用了,那就给我们的代码动个小手术吧。
改成如下代码即可编译通过,不要犹豫了,赶紧试试吧!
unchecked
{
short x = -1;
x = (short)0xffff;
}