运算符优先级
以下符号,从上到下,优先级递减~
1)各种括号
2)单目运算符,如:!
,负(-)
,正(+)
,取址(&)
,sizeof
,取反(~)
,--
,++
,解引用(*)
,类型强转
等
3)乘(*)
,除(/)
,取余(%)
4)加(+)
,减(-)
5)移位运算符(<< 、>>)
6)大于(>)
,大于等于(>=)
,小于(<)
,小于等于(<=)
7)等于(==)
,不等于(!=)
8)按位与(&)
9)按位异或(^)
10)按位或(|)
11)逻辑与(&&)
12)逻辑或(||)
13)三目运算符(A?B:C)
14)各种赋值运算符(=, +=, -=, *=, /=)
等
15)逗号运算符
:用逗号隔开多个表达式,然后从左至右运算,最后一个表达式的结果为目标结果
例:求下述程序中a 的值
int a = 4;
a += a*a << 1+2;
解:因为程序中运算符优先级为 '*' , '+'
> '<<'
> '+='
所以则先是进行 a*a
, 再进行 1+2
, 再对 a*a
的结果左移 3位
,相当于是乘以8
,所以等式中 +=
右边的结果为:16 << 3 = 128
,
此时a = 4
,故而a+=128
即为 a = a + 128 = 132
.