c#入门-运算顺序

文章详细阐述了C#语言中运算的顺序规则,包括数学运算、关系运算、逻辑运算、位运算以及赋值运算的优先级。提到了表达式的复杂性,如数组访问、字符串操作以及三元运算和空合并运算的处理。同时强调了括号在确定运算顺序中的重要性以及赋值运算的特殊性,即赋值运算发生在右侧表达式计算之后。
摘要由CSDN通过智能技术生成

运算顺序

c#中的数学运算会考虑先乘除后加减,有括号先算括号。
那如果同时又存在关系运算和逻辑运算呢。

复杂的表达式就要仔细分析一下了。
你可以在官网找到对运算顺序的详细介绍。点击这里

这里会对其进行概括

内容访问

内容访问例如访问数组元素,访问内容,执行方法。
他们也是一种表达式,虽然代表了一个值但确实要经过很多步骤才能获得。

string s = "hello";

var l = s.Length;
var t=s.ToString();
var n = new string(s);
var a = s[0];

此外还有i++和i--。
这个运算遇到的时候会完成取值。
但一旦取值完成就会执行++或--的操作。

前置一元运算符

前置一元运算符意味着对一个值进行修饰。
这包括数字的取正和取负。位运算和逻辑运算的非,强制转换,++i和--i。

int i = 12;

var a = +i;
var b=- i;
var c = ~i;
var d = (float)i;

范围,switch,with表达式

switch表达式和with表达式通常不会和其他表达式混杂在一起。
而范围运算,常见于找出某个元素,然后偏移一定距离。
但是,由于范围的构建比相加要优先,所以必须打括号。

string s = "X:\\a.txt";
int index=s.IndexOf('\\');//找到字符串中\的位置
string s2 = s[(index+1)..];//必须打括号

数学运算

数学运算中,乘除法和取余数(%),优先级高于加减法。

位移

位移的优先级比数学运算低。意味着先要算出结果才会进行位移。

关系运算

关系运算包括大于,小于,不大于,不小于,和模式匹配。
而相等和不等的优先级低于上述的关系运算。

逻辑运算

逻辑运算中,非和位取反是前置一元运算,优先级最高。
然后是与高于或。
位运算高于逻辑运算。

Console.WriteLine(true | true & false);   // output: True
Console.WriteLine((true | true) & false); // output: False

Console.WriteLine(true || true & false);   // output: True
Console.WriteLine(true | true && false); // output: False

条件运算

条件运算包括三元运算和空合并运算。
他们本身包含一个条件和子值。
会先执行条件,然后执行需要的子值。

如果条件运算参杂到其他运算中,需要给他打括号。

int i = 12;

var f = 13.6f + i < 10 ? i : i - 10;
var f2 = 13.6f + (i < 10 ? i : i - 10);

int i1 = f;
int i2 = f2;//f会被认为是int,而f2会认为是float

赋值运算

赋值运算是优先级最低的。
赋值运算本身也可以取值,因此可以混杂在表达式中。

int i;
string s = "h" + (i = 66);

赋值运算会优先计算右侧的值。
所以在遇到多重赋值时例如

int a,b,c,d;
a=b=c=d=15;

这个式子中a是最后被赋值的。
而赋值运算的取值是计算出要给变量赋值的值,而不是赋值完成后变量的值。
(a=12,执行完这条语句后再对a进行取值,a不一定就是12)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值