这篇文章的表总结的很好。这里大概总结一下,便于记忆。
运算符的优先级基本符合常识,除了下面5里面的按位运算符,优先级从高到低依次是:
1. 取struct 成员的, 后缀++/--, 和函数调用(),例如(. / -> / [])
2. 一元操作符, 前缀++/--,例如(+ / - / ! / ~ / * / & / (type) / sizeof )
3. 运算符(* / '/' / % / + / - / << / >>)
4. 比较运算符 (> / < / >= / <= / == / !=)
5. 运算符(按位运算) (& ^ |)
6. 逻辑与或 (&& / ||)
7. 三元条件 (?:)
8. 赋值 (= / += / -= / *= / /= / %= / <<= / >>= / &= / ^= / |=)
9. 逗号 (,)
关于结合性
一元操作符和三元条件运算符是按照从右往左的顺序结合,其他的都是按照从左到右的顺序。结合的意思是,运算符选哪个操作数当它的操作数。从右到左结合意味着,操作符先选右边的操作数当作它的操作数。之前看过一篇文章有例子,找到的时候贴过来。