c#入门-运算符

可用运算符

值的运算也是自定义的,但是这个就看不出了。
要么翻源文件,要么翻说明书才知道一个类型能怎么运算。

但是一个默认情况下的类型,是没有定义任何运算符的。
也就是说你适用的运算一定是由人先写出来的,没有系统默认的。

这一章为后续的自定义运算符做铺垫,运算符是不能想选什么符号就用什么符号的。
这一章先一览常见的运算符。

一元运算符

一元运算符只需要一个值就能进行计算

负数

在这里插入图片描述
在操作数前面可以适用+号或 - 号。直接含义是表示这个数字的本身,和他的负数。

取反

符号~和!都表示取相反的值。
在官方的定义里~被用于整数(小数类型不可用),!用于bool
在这里插入图片描述
数字的储存,是按照10101010这样的方式储存的,
对他适用~,会把每个数字全部取反,变成01010101。

二元运算

数学运算

数学运算符共有5种
分别是加,减,乘,除,和求余。

int a = 1 + 1;
int b = 1 - 1;
int c = 1 * 1;
int d = 1 / 1;
int e = 1 % 1;//求余数适用%符号

逻辑运算

逻辑运算除了上面说过的取反,
还有位与,逻辑与,位或,逻辑或,异或

bool t = true;
bool f = false;

bool b1 = t | f;//位或
bool b2 = t || f;//逻辑或
bool b3 = t & f;//位与
bool b4 = t && f;//逻辑与
bool b5 = t ^ f;//异或
什么是与,或,异或

与是指需要所有条件都满足。
与就是和的意思,这场比赛小明和小王都必须到场,就是缺一不可。

或是指条件有一个满足。
这场比赛小明和小王有任何一个人来就行了。

异或,条件有不一样的。
这场比赛,要么小明在红队小王在蓝队;要么小明在蓝队小王在红队。
总之他们不能在一个队伍里。

逻辑和或的区别
  1. 位可以对数字使用。和取反一样,对这个数字上的所有01进行或运算,或与运算。
  2. 逻辑运算会短路。如果左边的值已经能得到结果了,就不会再执行右边的值了。

例如,整数的0不能用来当除数。
b6在计算的时候,左侧直接能得到值,不会计算1/0,所以不会出错。
而b7会执行到1/0。

int i = 0;
bool b6 = true || 1 / i > 0;
bool b7 = true | i / i > 0;

位偏移

位偏移一共有三种符号。左偏移,右偏移,不带符号右偏移。

int i1 = 1 >>> 2;
int i2 = 1 << 2;
int i3 = 1 >> 2;

对于一个二进制的数字00010100来说,
左偏移两位就会变成:01010000。从结果来说就是值除4.
右偏移同理,偏移三位相当于乘8。
而无符号右偏移,会保留符号位,也就是第一位数字不动。

偏移的作用很小。他的作用就是给算法工程师做优化。
直接偏移的效率是比算乘法除法要快的。

关系运算

关系运算有6种。分别是大于,小于,大于等于,小于等于,等于,不等于。

int i1 = 10, i2 = 10;
bool b1 = i1 < i2;
bool b2 = i1 <= i2;
bool b3 = i1 > i2;
bool b4 = i1 >= i2;
bool b5 = i1 == i2;
bool b6 = i1 != i2;

需要强调的是他的顺序。等于号一定是写在右边的。
另外,等于运算需要写两个等于。一个等于只用来表示赋值运算。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值