【C#每日一帖】给变量赋常量值的编译错误解决

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;
}

转载于:https://my.oschina.net/u/138598/blog/30068

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值