一般的想法是掌握优先级与结合性意义不大,因为可以用括号搞定一切,但是我们不能保证别人也这么做,所以在看别人的程序时,就有可能因为优先级和结合性的问题而理解错误。总结一些规律来记住优先级和结合性是有必要的。
一、优先级由高到底顺序如下:
规律一、运算符所需要的操作数越多优先级越低。
1、特殊运算符(特殊情况特殊对待)
(), [], ->, .
2、单目运算符
!, ~, ++, --, +(正号), -(负符号),*, &,sizeof()
3、算术运算(双目运算符,分三级,乘除加减移位)
3.1
*, /, %
3.2
+, -
3.3
<< >>(移位为什么在算术运算符的最后,因为还没有计算机的时候就有加减乘除了,“小样,你新来的吧”)
4、关系运算符 (双目运算符,关系运算符为什么要放到算术运算符的后面,因为自然的逻辑是先运算后比较)
4.1
<, <=, >=, >
4.2
==,!=
规律二、“与”的优先级比“或”高
5、位运算符 (双目运算符,分三层)
5.1
&
5.2
^
5.3
|
规律三、位运算优先级比逻辑运算优先级高
6、逻辑运算符 (双目运算符)
6.1
&&
6.2
||
7、条件运算符(三目运算符)
? :
8、各种赋值 (所有运算完成才能赋值)
=, +=, -=, *=, /=,,&=, ^=, |=, <<=, >>=
9、逗号运算符 (只是为了分割表达式,所以优先级最低,很少用到)
,
二、结合性
只有单目,三目,赋值是从右向左,其他是从左向右。