zoukankan      html  css  js  c++  java
  • C# checked和unchecked运算符

    1、作用

    checked和unchecked运算符用于CLR(公共语言运行时)强制对它们所作用的代码块,进行(不进行)代码溢出检测

    2、示例说明

    有代码如下:

    static void Main(string[] args)
    {
         byte b = 255;
         b++;
         Console.WriteLine(b.ToString());
    }

    byte数据类型只能包含0~255的数,所以递增的值就会发生溢出。CLR如何处理这个溢出,取决于许多因素,包括编译器选项,很多时候可能会得不到我们的想要的溢出报错。

    So,C#提供了checked关键字,就是用来干这个的,如果把一个可能存在溢出的代码块标记为checked,CLR就会执行溢出检查,如果发生溢出,就抛出OverflowExceprion异常.修改上面的代码:

    byte b = 255;
    checked
    {
        b++;
    }
    Console.WriteLine(b.ToString());

    ok,CLR抛出了OverflowExceprion异常.

    那么unchecked关键字的作用,禁止CLR进行溢出检测,代码如下:

    byte b = 255;
    unchecked
    {
        b++;
    }
    Console.WriteLine(b.ToString());

    在本例中,不会抛出异常,但会丢失数据,因为byte的数据类型不能包含256,溢出的位会丢失,所以b变量得到的值是0;

    注:unchecked是默认行为,只有在checked的代码块中有需要不进行检查的代码,才显示的使用unchecked。

  • 相关阅读:
    Python基础编程常用模块汇总
    博客目录
    网络编程
    python 对象
    python模块和规范开发
    python常用内置函数
    python递归函数和匿名函数
    python装饰器
    python迭代器,生成器,推导式
    python作用域
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/6831734.html
Copyright © 2011-2022 走看看