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呢?
从二进制看的出,最左边的一位丢失了...