c#入门-复合运算

复合运算

如果想为一个变量赋值,然后值是自己对别人进行某种计算,那么可以简写。
把表达式中的自己丢掉,把运算符放在等于号的左边:

int a = 10;
a += 15;
//等同于 a = a + 15;
double d = 5;
d *= a;
//等同于 d = d * a;
bool b = true;
b &= false;
//等同于 b = b & false;
Console.WriteLine(a <<= 2);
//等同于 Console.WriteLine(a = a << 2);

逻辑与,逻辑或,逻辑非不能组成复合运算

赋值表达式的值

对于普通赋值表达式而言,会返回右侧的值。
在某些特殊的情况下,执行a=b后,a的结果不一定是b

int a, b, c, d;
//例如连续赋值语句:
a = b = c = d = 10;
//可以理解为
a = (b = (c = (d = 10)));
//或是
d = 10;
c = 10;
b = 10;
a = 10;
//无论此期间bcd发生了怎样的变化,对a来说只是把10赋值给他。

对于符合赋值表达式而言,结果为完成计算以后的自己

int a, b, c, d;
a = b = c = d = 10;
a += b += c += d += 10;
Console.WriteLine(a);//50
Console.WriteLine(b);//40
Console.WriteLine(c);//30
Console.WriteLine(d);//20

自增,自减

数值类型在加1或减1时可以简写。在变量的前面或后面连写两个++或 – – 。

int a = 0;
a++;

如果符号写在前面,那么这个表达式返回的结果就是完成运算后的值
如果符号写在后面,那么返回的是计算之前的值。
在这里插入图片描述

三目运算(三元运算)

三目运算是一个取值表达式,格式为:条件+问号+满足时的值+冒号+不满足时的值。
三目运算也是短路运算。只会计算和运行需要的那边的值。

int a = 3, b = 3;
Console.WriteLine(true ? ++a : ++b);
Console.WriteLine($"a={a},b={b}");//a=4,b=3。b++没有被运行
a = 3;
b = 3;
Console.WriteLine(false ? --a : --b);
Console.WriteLine($"a={a},b={b}");//a=3,b=2

三目运算不是操作语句,不能独立成句。
三目运算符是值表达式,待返回的两个值需要能转化为同一类型。并且是能取值的语句。
三目表达式中有一个冒号,如果在内插字符串中使用需要打个括号,否则会视为格式说明符。
在这里插入图片描述
三目运算符可以嵌套使用,但哪怕加了括号,都很难看懂

var v3 = true ? true ? true ? 1 : 2 : 3 : 4;
//等同于
v3 = true ? (true ? (true ? 1 : 2) : 3) : 4;

var v4 = true ? true ? 1 : 2 : true ? 3 : 4;
//等同于
v4 = true ? (true ? 1 : 2) : (true ? 3 : 4);

舍弃表达式

使用舍弃符_可以和能取值的语句凑成句子
在这里插入图片描述
不过,下划线是有效的标识符。如果你已经使用了下滑作为变量名,那么这个功能无法使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值