优先级 运算符 结合性
1 () [] -> . 自左向右
2 ! ~ ++ -- - (type) * & sizeof 自右向左
3 & * % 自左向右
4 + - 自左向右
5 << >> 自左向右
6 < <= > >= 自左向右
7 == != 自左向右
8 & 自左向右
9 ^ 自左向右
10 | 自左向右
11 && 自左向右
12 || 自左向右
13 ?: 自右向左
14 = += -= *= /= %= <<= >>= &= ^= |= 自右向左
15 , 自左向右
优先级最高者其实并不是真正意义上的运算符,包括:括号(函数调用操作符)、数组下标和各结构成员选择操作符。
接下来是单目操作符,优先级比单目操作符低的是双目运算符,在双目操作符中,算术运算符的优先级最高,移位运算
符次之,关系运算符载次之,接着是逻辑运算符。条件运算符是C语言中唯一的一个三目运算符,逗号运算符的优先级最低。
记住两点:
(1)任何一个逻辑运算符的优先级低于任何一个关系运算符。 (2)移位运算符的优先级比算术运算符要低,但是比关系运算符要高。