4.2 运算符优先级和结合性
前面几节中介绍了各种运算符的含义以及如何使用。但是,如果多个运算符一起使用,那么各种运算符的优先级和结合性如何呢?本节将介绍运算符的优先级和结合性。
4.2.1 运算符优先级
当不同的运算符混合运算时,运算顺序是根据运算符的优先级而定的,优先级高的运算符先运算,优先级低的运算符后运算。在一个表达式中,如果各运算符有相同的优先级,运算顺序是从左向右,还是从右向左,是由运算符的结合性确定的。
表4-6列出了C++运算符的优先级。
表4-6 运算符的优先级
下面通过一个例子来说明运算符优先级的使用方法和技巧。
【实例4-10】运算符优先级(代码4-10.txt)
新建名为“yxtest”的【C++ Source File】源程序,源代码如下所示:
【代码详解】
在该例中,定义了三个int型变量a、b、c,变量a赋值为1,变量b赋值为1,变量c赋值为0;再将a+b==2的结果赋值给c,将c的结果输出。
运行结果如图4-11所示。
【实例分析】
从运行结果来看,c的结果为1。首先是算术运算a+b=2,然后是逻辑运算2==2,最后是赋值运算c=2==2(若为真,则结果是1;若为假,则结果是0)。
4.2.2 运算符结合性
前面介绍了运算符的优先级,知道了运算符优先级高的先运算,运算符优先级低的后运算。那么,相同优先级的运算符在C++中如何处理呢?
因此引入了运算符结合性的概念。运算符的结合性是指同一优先级的运算符在表达式中操作的组织方向,即当一个运算对象两侧运算符的优先级别相同时,运算对象与运算符的结合顺序。C++语言规定了各种运算符的结合方向(结合性)。大多数运算符的结合方向是“自左至右”,即先左后右。例如a-b+c,b两侧的-和+两种运算符的优先级相同,按先左后右的结合方向,b先与减号结合,执行a-b的运算,再执行加c的运算。除了自左至右的结合性外,C++语言有三类运算符参与运算的结合方向是从右至左,即单目运算符>条件运算符>赋值运算符。
下面用表4-7来说明运算符的结合性。
表4-7 运算符的结合性