优先级 | 运算符 | 含义 | 结合 方向 |
---|---|---|---|
1 | ()、[ ]、->、. | 圆括号、数组元素下标、指向结构体成员、引用结构体成员 | 自左 向右 |
2 | !、~、++、--、*、&、sizeof | 逻辑非、按位反、增1、减1、间接寻址符、取地址符、字节运算符 | 自右 向左 |
3 | *、/、% | 乘、除、取余 | 自左 向右 |
4 | +、- | 加、减 | 自左 向右 |
5 | <<、>> | 左移、右移 | 自左 向右 |
6 | <=、>=、>、< | 小于等于,大于等于、大于、小于 | 自左 向右 |
7 | ==、!= | 等于、不等于 | 自左 向右 |
8 | & | 按位与 | 自左 向右 |
9 | ^ | 按位异或 | 自左 向右 |
10 | | | 按位或 | 自左 向右 |
11 | && | 逻辑与 | 自左 向右 |
12 | || | 逻辑或 | 自左 向右 |
13 | ?: | 三目运算符 | 自右 向左 |
14 | =、+=、-=、*=、/=、|=、&=、<<=、>>= | 赋值运算符、复合赋值运算符 | 自右 向左 |
15 | , | 逗号运算符 | 自左 向右 |
注:
1.同一优先级的运算符,运算次序由结合性来决定
例如:*++p,应该先进行++运算,后进行*操作
2.从上述表格可大致归纳出各类运算符的优先级为:
初等运算符 > 单目运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 三目运算符 > 赋值运算符 > 逗号运算符
3.建议:勤使用"()"可以避免运算符优先级带来的影响。