黑马程序员技术交流社区

标题: 运算符的优先级 [打印本页]

作者: 刘斌    时间: 2012-12-16 11:24
标题: 运算符的优先级
运算符是表达式很重要的一部分,对表达式中的操作数进行运算。
如+ - * / % 等,根据运算符所需操作数的个数,可把运算符分为以下几类

一元运算符:只带有一个操作数并使用前缀表示法,如:--x或者x++,++,--等运算符。
二元运算符:带有两个操作数并且全部使用中缀表示法,如:x+y, + - * / 等运算符。
三元运算符:带有3个操作数并且使用中缀表示法,如:? : 运算符。 算术表达式是最为常见的一种表达式,由操作数和运算符组成,
而这些运算符之间存在一定的优先级,如*运算符的优先级就大于+
当表达式包括多个运算符时,运算符的优先级控制各个运算符的运算顺序。
对于x+y*z表达式而言,该表达式首先计算y*x表达式的值,然后再计算y*z的结果与x的和。
即该表达式等价于x+(y*z)表达式。
因为* 运算符的优先级大于+ 运算符的优先级。

根据运算符的优先级可以把C#中运算符分为以下14类(从高到低的优先级顺序)
基本:x.y f(x)  a[x]  x++  x--  new  typeof  checked  unchecked
一元:+  -  !  ~  ++x  --x (T)x   (T)x为类型转换运算
乘除:* / %
加减:+ -
移位:<<  >>
关系和类型检测:<  >  <=  >=  is  as
相等:==  !=
逻辑与:&
逻辑异或:^
逻辑或:|
条件与:&&
条件或:||
条件:?:
赋值:=  *=  /=  % =  +=  -=  <<=  >>=  &=  ^=  |=

当操作数出现的具有相同优先级的两个运算符之间时,
运算符的顺序与运算符本身特性相关。
除了赋值运算符外,所有的二元运算符都是从左向右执行运算。
如"x+y+z"表达式按照(x+y)+z表达式进行计算。
赋值运算和?:条件运算符是从右向左执行运算。
如:x=y=z表达式按照x=(y=z)表达式进行运算


作者: 许庭洲    时间: 2012-12-16 21:23
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2