//隐式转化是数据类型转换的一种方式
//隐式转化 就是小类型转化为大类型
//类型大小判断可以通过包含关系来区分
//类型大小判断也可以通过父子关系来区分
//有符号整型
//long > int > short > sbyte
sbyte sb = -10; // -2^7----> 2^7-1
short sh = sb; // -2^15---> 2^15-1
int i = sh; // -2^31--->2^31-1
long l = i; // -2^63---> 2^63-1
//无符号整形
//ulong > uint > ushort > byte
byte b = 10; //1个字节8位 0---> 2^8-1
ushort us = b; //2个字节16位 0---> 2^16-1
uint ui = us; //4个字节32位 0---> 2^32-1
ulong ul = ui; //8个字节64位 0---> 2^64-1
//有符号类型不能隐式转化为无符号类型 // 因为无符号不包含负数 而有符号类型有负数
//有符号和无符号之间的包含关系
//short > byte
//int > ushort
//long > uint
//浮点型
//double > float
float f = 0.12f; // 占4个字节 有效数字位数7-8位
double d = f; // 占8个字节 有效数字 15-18位
//十进制小数 floa 和 double 无法隐式转化为 decimal 类型
//decimal 是十进制小数 而 floa 和 double使用二进制形式 所以本质上有所不同
decimal de = 0.123m; //占16个字节 有效数字位数 28 位
//浮点型和整形之间的转化
//任何的浮点型都大于任何的整形
// 十进制小数也大于任意的整形
f = l;
d = ul;
de = l;
//bool 类型无法隐式转化为任意其他类型
//char 字符型
char c = 'a'; // 存储的是字符的编码值 ascll 是一个无符号整形 存储的数据和无符号 整形 ushort 范围一样
//char 类型可以隐式转化为ushort
us = c;
//字符串
//字符串无法隐式转化为其他类型 其他类型也无法隐式转化为字符串