1.一个表达式中包含多个运算符,运算符优先级决定表达式那部分被处理,优先级高先被处理。
2.如果表达式有相同优先级,那它们的结合律决定它们的组合方式是从左往右还是从右往左。
表1 运算符组合方式

表达式 结合律 组合方式
a/b%c 从左到右 (a/b)%c
a=b=c 从右到左 a=(b=c)

表2 运算符优先级和结合律
表 2 中优先级最高的运算符中的最后一个(类型名称){列表} 是 C99 新增加的。

一些运算符记号在表 2 中出现了两次。例如,自增运算符 ++ 和自减运算符 --,在作后缀运算符(如表达式 x++)时,较其用作前缀运算符(如表达式 ++x)时,具有较高的优先级。

+、-、* 和 & 运算符记号不但可以当作一元运算符(unary operator,只需要一个操作数),也可以当作二元运算符(binary operator,需要两个操作数)。例如,* 只有一个操作数的时候,就是间接运算符(indirection operator),而有两个操作数的时候,就是乘号。

在这些例子中,一元运算符比二元运算符具有更高的优先级。例如,表达式 *ptrl**ptr2 等同于表达式(*ptrl)*(*ptr2)。