csharp的隐式转换/显示转换

作者: 匿名用户
时间:2021-01-06
浏览:70
        static void Main(string[] args)
        {
            ushort des;
            char sou = 'a';
            des = sou;
            WriteLine($"sou is {sou}");
            WriteLine($"des is {des}");

            ReadKey();
        }
隐式转换输出:
sou is a
des is 97
            byte des;
            short sou = 7;
            des = sou;
            WriteLine($"sou是{sou}");
            WriteLine($"des是{des}");
如果你如上所写,是错的,这里需要用到显示转换,也就是强制转换
            byte des;
            short sou = 7;
            des = (byte)sou; //他与python不同的是,c#的小括号是给类型自己的(byte)sou,而不是byte(sou)
            WriteLine($"sou是{sou}");
            WriteLine($"des是{des}");
显示转换输出:
sou是7
des是7


checked用于检测上下文溢出.如果使用unchecked效果等同于没使用checked

            byte des;
            short sou = 281;
            des = (byte)sou;
            WriteLine($"sou是{sou}");
            WriteLine($"des是{des}");
输出结果:
sou是281
des是25

我们看一下这两个数字的二进制:
281 = 100011001
25就= 000011001
255 = 011111111
byte可以存储的最大值是255
你看,当把281这个数字强制转换为byte类型后赋值给des,为什么十进制的281变成了25呢?
从二进制看的出,最左边的一位丢失了...

本文原文地址:https://www.5yang.cc/5035

本篇文章来源于 https://www.5yang.cc/5035 版权均归站长本人所有,如有侵权,请联系seowhy2018删除。
    0 人参与评论
该文章尚未收到评论 :(
提交评论禁止带推广链接、违法词及灌水,违规将封禁账号!!了解合理带链接的方法