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关键字用来忽略溢出异常。

  • 相关阅读:
    delphi AlphaControls
    MATLAB 中NORM运用
    matlab画图形函数 semilogx
    fir2(n,f,m)
    离散系统频响特性函数freqz()
    snr ber Eb/N0之间的区别与联系
    MATLAB中白噪声的WGN和AWGN函数的使用
    matlab 功率谱分析
    用matlab实现同一个序列重复N倍
    Stem函数绘图
  • 原文地址:https://www.cnblogs.com/darrenji/p/3907782.html
Copyright © 2011-2022 走看看