表达式与运算符

表达式是啥?

表达式就是变量、常量值及运算符的组合

运算符是?

对变量和常量值由作用的符号。

根据操作的变量个数分为一元、二元及三元运算符

运算符类别示例表达式效果
+一元a = +3;正号
-一元a = -3;负号
++一元a = ++b;a等于(b+1)的值 b的值加1
--一元a = --b;a等于(b-1)的值 b的值减1
++一元a = b++;a等于b的值 b的值加1
--一元a = b--;a等于b的值 b的值减1
一元a = !b; a等于b否定的值
~一元a = ~b;取反 a等于b的二进制取反后的值
+二元a = b + c;加法 注意超出类型范围
-二元a = b-  c;减法 注意是否有符号
*二元a = b * c;乘法 注意超出类型范围
/二元a  = b / c;除法 注意结果为浮点数
%二元a = b % c;取余 获取余数
=二元a = 3;赋值号
+=二元a += 3;等效于a = a + 3;
-=二元a -= 3;等效于a = a - 3;
*=二元a *= 3;等效于a = a * 3;
/=二元a /= 3;等效于a = a / 3;
%=二元a %= 3;等效于a = a % 3;
==二元a = b == c;等于号  判定符号两边是否相等
!=二元a = b != c;不等号  判定符号两边是否不相等
<二元a = b != c;小于号  判定符号左边是否小于右边
>二元a = b != c;大于号  判定符号左边是否大于右边
<=二元a = b != c;小于等于号  判定符号左边是否小于相等右边
>=二元a = b != c;大于等于号  判定符号左边是否大于相等右边
&二元a = b & c;与 当符号两边都为true时 结果为真
|二元a = b | c;或 当符号两边一侧为true时 结果为真
^二元a = b ^ c;异或 当符号两边真假不同时 结果为真
&&二元a = b && c;简洁与 当符号左侧为假时 不计算右侧 结果为假
||二元a = b || c;简洁或 当符号左侧为真时 不计算右侧 结果为真
&=二元a &= b;等效于 a = a & b;
|=二元a |= b;等效于 a = a | b;
^=二元a ^= b;等效于 a = a ^ b;
&二元a = b & c;位运算与 b与c的二进制相同位置上的数同时为1 该位置上的数结果为1
|二元a = b | c;位运算或 b与c的二进制相同位置上的数有一个为1 该位置上的数结果为1
? : 三元a = true? b : c; 当?前为真时 冒号前b赋值给a  当?前为假时 冒号后c赋值给a

感觉太多了  具体由啥用?

我们按功能对运算符进行划分

算术运算符(用来计算的符号)

int i = +3;    //    正号    i的值为3
int j = -3;    //    负号    j的值为-3
int k = i+j;    //    加法    k的值为0
k = i - j;    //    减法    k的值为6
k = i * j;    //    乘法    k的值为-9
k = i / j;    //    除法    k的值为-1
k = i % j;    //    取余    k的值为0
k = i++;    //    自增运算符    i当前值不变  语句结束后加一    k的值为3    i在该语句结束后值为4
k = ++i;    //    自增运算符    i当前值加一    k的值为5    i在该语句结束后值为5
k = j--;    //    自减运算符    j当前值不变  语句结束后减一    k的值为-3  j在该语句结束后值为-4
k = --j;    //    自减运算符    j当前值减一    k的值为-5  j在该语句结束后值为-5
 

*加号(+)当+的一端为字符串时,可将两端以字符串为结果相连接

int s = 5;
Console.WriteLine("s = " + s);

 

关系运算符

bool c = 3 > 6;    //    大于号  符号两边的值是否满足左侧大于右侧的关系  此结果为错
c = 3 < 6;        //    小于号    符号两边的值是否满足左侧小于右侧的关系  此结果为对
c = 3 == 6;    //    符号两边的值是否满足左侧等于右侧的关系  此结果为错
c = 3 != 6;    //    符号两边的值是否满足左侧不等于右侧的关系  此结果为对
c = 3 >= 6;    //    符号两边的值是否满足左侧大于等于右侧的关系  此结果为错
c = 3 <= 6;    //    符号两边的值是否满足左侧小于等于右侧的关系  此结果为对

逻辑运算符

bool a = true & false;    //    与    符号两边都为真时  结果为真    此结果为假
a = true | false;    //    或    符号两边由一侧为真时    结果为真    此结果为真
a = true ^ false;    //    异或    符号两边真假不同时    结果为真    此结果为真
int i = 5;
a = false && ((i++)>2);    
//    简洁与  在与的基础上  当左侧为假时  后面不进行计算  结果为假 语句结束后i的值为5
a = true || (i-- < 5);    
//    简洁或    在或的基础上  当左侧为真时  后面不进行计算  结果为真 语句结束后i的值为5

位运算符

int num1 = 5;    //    num1的值位5
int num2 = 7;    //    num2的值位7
int num = num1 & num2;    
//    与    两个数二进制对应数位上有0该二进制数位的值为0    其余该二进制数位的值为1    num的值为5
num = num1 | num2;    
//    或    两个数二进制对应数位上有1该二进制数位的值为1    其余该二进制数位的值为0    num的值为7
num = num1 ^ num2;    
//    与  两个数二进制对应数位上值相同时该二进制数位的值为0  其余该二进制数位的值为1    num的值为2
num = ~num1;     
//    取反    该数字的二进制0变1    1变0    num的值为-6

 

int a = 6;    //    a的值为6
int b = a << 3;    //    左移    a的二进制值向左移动三个数位    右边最低位补0    b的值为48
b = a >> 2;    //  右移  a的二进制值向右移动两个数位    a为正数   左边最高位正数补0    b的值为1
a = -6;
b = a >> 2;    //  右移  a的二进制值向右移动两个数位   a为负数    左边最高位正数补1    b的值为-2

复合赋值运算符

int i = 3;    //    赋值号    将符号右边的值给到左边的变量    i的值为3
i += 2;    //    等同于    i = i + 2;    i的值为5
i -= 3;    //    等同于    i = i - 3;    i的值为2
i *= 4;    //    等同于    i = i * 4;    i的值为8
i /= 2;    //    等同于    i = i / 2;    i的值为4
i %= 3;    //    等同于    i = i % 3;    i的值为1

*任何二元运算符都可以和赋值号进行复合作为复合赋值运算符使用

条件运算符

int a = true ? 5 : 7;
//    条件运算符    当?前是对的将:前面的值赋值给a    否则将:后面的值赋值给a

运算符的优先级与结合性

含义运算符操作数结合性
单目++,--,!,~单目👈
算术*,/,%双目👉
+,-
移位<<,>>双目👉
关系>,>=,<,<=双目👉
==,!=
逻辑&&,&双目👉
||,|
条件? :三目👈
赋值=,+=,-=,*=,/=,%=双目👈

*上面表格中运算符的优先级从上往下递减

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值