【C#学习】12操作符详解(下)


在这里插入图片描述

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
在这里插入图片描述

解析C#中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

需要注意:赋值运算符的运算顺序:从右往左

发布了29 篇原创文章 · 获赞 3 · 访问量 951

猜你喜欢

转载自blog.csdn.net/weixin_44813932/article/details/103821382