C#中运算符优先级代码!!!!

来源:百度知道 编辑:UC知道 时间:2024/09/20 21:22:10
急求一段自己定义运算符优先级的代码~!·#¥%……—×(

当一个表达式包含多样操作符时,操作符的优先级控制着单个操作符求值的顺序。例如:表达式x+y*z按照x+(y*z)求值,因为“*”操作符比“+”操作符有更高的优先级。这和数学运算中的先乘除后加减是一致的。

表7-1总结了所有操作符从高到低的优先级顺序。

表7-1 操作符从高到低的优先级顺序

类别 操作符
初级操作符 (x) x.y f(x) a[x] x++ x-- new type of sizeof checked unchecked
一元操作符 + - ! ~ ++x --x (T)x
乘、除操作符 * / %
加减操作符 + -
移位操作符 << >>
关系操作符 < > <= >= is as
等式操作符 == !=
逻辑与操作符 &
逻辑异或操作符 ^
逻辑或操作符 |
条件与操作符 &&
条件或操作符 ||
条件操作符 ?:
赋值操作符 = *= /= %= += -= <<= >>= &= ^= |=

当一个操作数出现在两个有相同优先级的操作符之间时,操作符按照出现的顺序由左到右执行。

除了赋值的操作符,所有的二进制的操作符都是左结合(left-associative)的,也就是说,操作按照从左向右的顺序执行。例如:x+y+z按(x+y)+z进行求值。本文发表于http://bianceng.cn(编程入门网)

赋值操作符和条件操作符(?:)按照右接合(right-associative)的原则,即操作按照从右向左的顺序执行。如:x=y=z按照x=(y=z)进行求值。

建议在写表达式的时候,如果无法确定操作符的有效顺序,则尽量采用括号来保证运算的顺序,这样也使得程序一目了然,而且自己在编程时能够思路清晰。