自动转换类型与强制转换
//自动类型转换
sbyte num0 = 10;
int num1 = num0;//sbyte变成int
Console.WriteLine(num1);
//强制类型转换
int num2 = 128;
sbyte num3 = (sbyte)num2;
Console.WriteLine(num3);
在程序中,short和sbyte在参与运算时,会自动转换为int
//在程序中,short和sbyte在参与运算时,会自动转换为int
short num0 = 1, num1= 2;
int sum = num0 +num1;
Console.WriteLine(sum);
sbyte num2= 1, num3 = 2;
int sum1 = num2 + num3;
Console.WriteLine(sum1);
字符型和整型相同,可以相互转换,字符在计算机底层存储的时候都是采用一个数字表存储
例如:ASCII码
//字符型和整型相同,可以相互转换,
//字符在计算机底层存储的时候都是采用一个数字表存0,储例如:ASCII码
char c = '张';
Console.WriteLine((char)(c+1));
//自动类型转换
int a = 'a';
Console.WriteLine(a);
//强制类型转换
char c2 = (char)97;
Console.WriteLine(c2);
补充ASCII码的图
算术运算符
Console.WriteLine("算术运算");//算术运算符
int a = 10, b = 20;
Console.WriteLine(a+b);//30
Console.WriteLine(a-b);//-10
Console.WriteLine(a*b);//200
Console.WriteLine(a/b);//0,整型与整型运算,得到整型
Console.WriteLine(a%b);//10
自增运算
- 自增运算可放在变量前,也可放在变量后
- 自增运算若放在变量前,表示先对这个变量进行自增操作,然后再对这个变量的值使用
- 自增运算若放在变量前,表示先取这个变量的值使用,然后再对这个变量进行自增操作
int a =10;
Console.WriteLine(a++);//10
Console.WriteLine(++a);//12
Console.WriteLine(--a);//11
Console.WriteLine(a--);//11
Console.WriteLine(a);//10
逻辑运算符:指的是两个布尔型的数据进行逻辑运算
&逻辑与:两个数据都是true时,结果才是true,一个是false,都是false
|逻辑或:两个数据都是false时才是false,只要一个数据是true,结果就是true
!逻辑非:取反
^逻辑异或:两个数据不一样是false,两个数据都一样结果是false
//逻辑运算符
//指的是两个布尔型的数据进行逻辑运算
//&逻辑与:两个数据都是true时,结果才是true,一个是false,都是false
Console.WriteLine(true & true & false);//false
//|逻辑或:两个数据都是false时才是false,只要一个数据是true,结果就是true
Console.WriteLine(false | true);//true
//!逻辑非:取反
Console.WriteLine(!true);//false
//^逻辑异或:两个数据不一样是false,两个数据都一样结果是false
Console.WriteLine(true^true);//false
短路与:如果某个数据已经可以决定整体的运算结果了,那么后面的表达是不参与运算
短路或:与短路与相同
短路与:如果某个数据已经可以决定整体的运算结果了,那么后面的表达是不参与运算
int a = 10,b= 30;
bool result = a++ > --b && a++ < b++;
//a=10<b=29在这里就false了,所以不进行后面的
Console.WriteLine(result);//false
Console.WriteLine(a);//a=11
Console.WriteLine(b);//b=29
//短路或与短路与相同
位运算符:参与位运算的都是整形数据,将两个参与运算的数字展开为补码形式,将每一位进行运算。
//位运算符
//参与位运算的都是整形数据
//将两个参与运算的数字展开为补码形式,将每一位进行运算
Console.WriteLine(8 | 7);
//0000 1000
//0000 0111
//0000 1111=15
Console.WriteLine(8 & 7);
//0000 1000
//0000 0111
//0000 0000=0
Console.WriteLine(8 ^ 7);
//0000 1000
//0000 0111
//0000 1111=15
Console.WriteLine(~8);
//0000 1000
//1111 0111 负数
//1000 10001=-9 取补码
位左移和位右移
原数左移x位,后面补上x个0,也就是原数*2的x次方
原数右移x位,前面补上x个0,也就是原数/2的x次方
//位左移
Console.WriteLine(8 << 2);//8左移2位,后面补上2个0,也就是原数8*2的2次方:8*4=32
//0000 1000
//0010 0000=32
//位右移
Console.WriteLine(8 >> 2);//8右移2位,前面补上2个0,也就是原数8/2的2次方:8/4=2
//0000 1000
//0000 0010=2