C++运算符优先级总结

2015/04/29 C和C++基础

面试经常考到运算符优先级的问题,虽然简单,但是有时间长了,经常会忘记,因此对这部分知识总结了一下。

优先级最高的运算符:

然后分别是单目运算符,双目运算符,三目运算符

单目运算符:只对一个变量进行操作

代表符号: !(逻辑非) ~(按位取反) ++(自增) –(自减)

例如:int a=1;a++;

单目运算符中谨记: - 大于 (类型) 大于 ++ 大于 – 大于 * 大于 & 大于 ! 大于 ~ 大于 sizeof

双目运算符:对两个变量进行操作

双目运算符又分为:

1.算术运算符: / * % + - «  »

2.关系运算符: > >= < <= == !=

3.逻辑运算符:位(&、^)&&

三目运算符:对三个变量进行操作

赋值运算符

优先级最低运算符:逗号运算符

记忆方法如下:
记住一个最高的:构造类型的元素或成员以及小括号。
记住一个最低的:逗号运算符。
剩余的是一、二、三、赋值。
意思是单目、双目、三目和赋值运算符。
在诸多运算符中,又分为:
算术、关系、逻辑。
两种位操作运算符中,移位运算符在算术运算符后边,逻辑位运算符在逻辑运算符的前面。再细分如下:
算术运算符分 *,/,%高于+,-。
关系运算符中,〉,〉=,<,<=高于==,!=。
逻辑运算符中,除了逻辑求反(!)是单目外,逻辑与(&&)高于逻辑或(||)。
逻辑位运算符中,除了逻辑按位求反(~)外,按位与(&)高于按位半加(^),高于按位或(|)。
这样就将15种优先级都记住了,再将记忆方法总结如下:
去掉一个最高的,去掉一个最低的,剩下的是一、二、三、赋值。双目运算符中,顺序为算术、关系和逻辑,移位和逻辑位插入其中。

例子

x*=y+8               //等价于  x*=(y+8)     双目运算符大于赋值运算符
max=(a>b)?a:b        //                    三目运算符大于赋值运算符
c>a+b                //等价于  c>(a+b)      算术运算符大于关系运算符
a>b==c               //等价于  (a>b)==c     关系运算符中>大于==
*p++                 //等价于  *(p++)       单目运算符中++大于*

Search

    Post Directory