文章目录
1.算术操作符
算术操作符包括乘法运算符(乘 *,除 /,取余 %),和加法运算符(加 +,减 -);计算机中的算术操作符和数学中的运算符使用起来基本没有差别,但是要注意以下三点:
(1)任何一个操作符都不能脱离其数据类型
(2)数学运算符中并没有取余符号 %
(3)在C#中进行数值计算时,务必要注意数值提升
什么是数值提升?
当运算符发现两边操作数的数据类型不一致时,为了损失运算结果的精度,就会进行数值提升。
int x = 4;
double y = 5.0;
var z = x * y;
//得到z的值为20,但z的数据类型是double类型
//为了不损失精度,编译器默认产生了精度提升,这就是数值提升
算数操作符详解
(1)乘法操作符
(2)除法操作符
(3)取余操作符
(4)加法操作符
还可以用于连接字符串
(5)减法操作符
2.位移操作符
数据在内存中以二进制的结构向左或向右进行一定位数的平移
左位移:<<
右位移:>>
在没有出现值溢出的情况下,左移就是乘2,右移就是除2;
所以7<<2就等价于:7×2×2 = 28;
问题:如果要进行位移操作的值是负数,在么进行右移操作,最高位补进的是0还是1呢?
C#中的补位规定:
左移:不论正负,都补进0
右移:如果正在操作的数是整数,补进0;如果是负数,补进1
所以如果操作的数是负数,最高位应补进1
3.关系操作符
关系操作符包括关系和类型检测操作符(<;>;<=;>=;is;as),相等操作符(== ;!=)
关系操作符构成的表达式的运算结果的数据类型一定是布尔类型
关系操作符的功能:
(1)比较数值类型
(2)比较字符类型
字符串不能比较大小,只能比较相等与否;
类型检测操作符 is 与 as
4.逻辑"与",逻辑’'或",逻辑"异或"
因为这些操作符一般都是操作二进制数值(以及图片,图形数据)所以也称:位与,位或,位异或
1为真,0为假
(1)位与(&):按位求与
(2)位或(|):按位求或
(3)位异或(^):两位不一样时为真,一样时为假
5.条件"与",条件"或"
(1)条件与(&&):并且,要求该操作符左右两边都是true
(2)条件或(||):或者,要求该操作符左右两边只要一边是ture即可
注意:短路效应
当 条件与 发现其左边的表达式为false时,右边的表达式就不会再被执行
当 条件或 发现其左边的表达式为ture时,右边的表达式就不会再被执行
写代码时要尽量避免短路效应
6.null值合并操作符:??
情况:一同学没按时交作业,暂需填null(不能填0分,意义是不一样的)
那么就会用到一个新的数据类型:可空类型
Nullable <int> x = null;
//由于可空类型 Nullable<int> 太常用,C#将其吸收为关键字,用 int? 表示
//也就是说,上述代码可以写成
int? x = null;
第二天该同学把作业上交了,需要替换null值为该同学真实成绩,就需要用到null值合并操作符了。
7.条件操作符:"?:"
条件操作符是所有操作符中唯一一个可接受三个操作数的操作符
条件操作符的本质,其实是if else分支的简记
8.赋值和lambda表达式
lambda表达式太深奥,先不做了解
在赋值操作符中,除了"=",其他的都是把赋值和运算合并在一起的运算符
int x +=3;
//等价于:x = x + 3
需要注意:赋值运算符的运算顺序:从右往左