zoukankan      html  css  js  c++  java
  • checked和unchecked的区别

    int类型的最大值是2147483647,2个最大值相加就会超出int的最大值,即出现溢出。

        class Program
    
        {
    
            static void Main(string[] args)
    
            {
    
                int y = 2147483647;
    
                int x = 2147483647;
    
                int z = x + y;
    
                Console.WriteLine(z.ToString());
    
                Console.ReadKey();
    
            }
    
        }
    

    把断点打在 int z = x + y;代码行,单步调试,可以看到z的值为-2。因为int类型的最大值是2147483647,x + y超出了最大值,出现了溢出。
    1

    □ 使用checked

    如果我们想让编译器帮我们判断是否溢出,就使用checked关键字。

        class Program
    
        {
    
            static void Main(string[] args)
    
            {
    
                int y = 2147483647;
    
                int x = 2147483647;
    
                int z = checked(x + y);
    
            }
    
        }

    运行,抛出溢出异常:   
    2

    如果我们想手动捕获并打印异常,应该这样写:

        class Program
    
        {
    
            static void Main(string[] args)
    
            {
    
                int y = 2147483647;
    
                int x = 2147483647;
    
                try
    
                {
    
                    int z = checked(x + y);
    
                }
    
                catch (OverflowException ex)
    
                {
    
                    Console.WriteLine(ex.Message);
    
                }
    
                Console.ReadKey();
    
            }
    
        }
    

    运行,
    3

    □ 使用unchecked   

    使用unchecked不会抛出溢出异常。

        class Program
    
        {
    
            static void Main(string[] args)
    
            {
    
                int y = 2147483647;
    
                int x = 2147483647;
    
                int z = unchecked(x + y);
    
                Console.WriteLine(z.ToString());
    
                Console.ReadKey();
    
            }
    
        }
    

    结果为:-2

    总结:checked关键字用来检查、捕获溢出异常,unchecked关键字用来忽略溢出异常。

  • 相关阅读:
    隐马尔科夫模型(HMM)
    各大IT企业招聘所须要求技能
    Java NIO和IO的主要差别
    Css 选择器总结
    程序猿生存定律-六个程序猿的故事(3)
    JVM学习心得
    APUE读书笔记-第14章-高级I/O
    《Word排版艺术》读后感,兼谈LaTeX
    LaTeX:Figures, Tables, and Equations 插入图表和公式
    LaTeX 的对参考文献的处理
  • 原文地址:https://www.cnblogs.com/darrenji/p/3907782.html
Copyright © 2011-2022 走看看