表1 显示了 C#运算符的优先级,其中顶部的运算符有最高的优先级(即在包
含多个运算符的表达式中,最先计算该运算符)。
除了运算符优先级,对于二元运算符,需要注意运算符是从左向右还是从右向左计算。除了少数运算符,所有的二元运算符都是左关联的。例如:
x + y + z
就等于:
(x + y) + z
需要先注意运算符的优先级,再考虑其关联性。在以下表达式中,先计算 y 和 z 相乘,再把计算的结果分配给 x,因为乘法的优先级高于加法:
x + y * z
“
关联性的重要例外是赋值运算符,它们是右关联。下面的表达式从右向左计算:
x = y = z
因为存在右关联性,所有变量 x、y、z 的值都是 3,且该运算符是从右向左计算的。如果这个运算符是从左向右计算,就不会是这种情况:
int z = 3;
int y = 2;
int x = 1;
x = y = z;
”
一个重要的、可能误导的右关联运算符是条件运算符。表达式
a ? b: c ? d: e
等于:
a = b: (c ? d: e)
这是因为该运算符是右关联的。
注意
在复杂的表达式中,应避免利用运算符优先级来生成正确的结果。使用圆括号指定运算符的执行顺序,可以使代码更整洁,避免出现潜在的冲突。
往期推荐
C# 迭代器
C# 执行 SQL 语句
C# 连接数据库
C# 接口的实现与继承
C# 泛型的使用
Love life,love yourself
关注小编不迷路呦~