优先级 | 运算符 | 结合性 |
1 | () , [] , -> , .(结构体成员运算符) | |
2 | ! , ~ , ++ , -- , -(负号) , *(指针运算符) &(地址与运算符) , sizeof | 右结合 |
3 | * , /(除法) , % | |
4 | + , - | |
5 | << , >> | |
6 | < , <= , > , >= | |
7 | == , != | |
8 | &(按位与) | |
9 | ^(按位异或) | |
10 | |(按位或) | |
11 | &&(逻辑与) | |
12 | ||(逻辑或) | |
13 | ? : (条件运算符) | 右结合 |
14 | =, += , -= , /= , %= , &= , ^= , |= ,<<=, >>= | 右结合 |
15 | , (逗号运算符) |
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。