三、运算符的优先级 代先級 | 运算符 | 结合律 |
1 | 后缀运算符:D0) ++ (类型名称)列表} | 以 到右 |
2 | 一元运算符:++--!-+-*& sizeof_Alignof | 从右到左 |
3 | 类型转换运算符:(类型名称) | 从右到左 |
4 | 乘除法运算符:*/% | 从左到右 |
5 | 加减法运算符:+- | 从左到右 |
6 | 移位运算符:<<>> | 从左到右 |
7 | 关系运算符:<<=>>= | 从在型定! |
8 | 相等运算符:==1= | 从左到右 |
9 | 位运算符 AND:& | 从左到右 |
10 | 位运算符 XOR:^ | 从左到右 |
11 | 位运算符 OR: 1 | 从左到右 |
12 | 逻辑运算符 AND:&& | 从左到右 |
13 | 逻辑运算符 OR:II |
|
14 | 条件运算符:? | 从右到左 |
15 | 賦値算符:=+ニーニオニ/=%=&=/=|=<<=>>= | 从右到左 |
16 | 逗号运算符:, | 从左到右 |
小技巧:
<1>表中优先级最高的运算符中的最后一个(类型名称)(列表}是C99新增加的。
<2>一些运算符记号在表中出现了两次。例如,自增运算符++和自减运算符一,在作后缀运算符(如表达式 x++)时,较其用作前缀运算符(如表达式++x)时,具有较高的优先级。
英
<3>+、、*和&运算符记号不但可以当作一元运算符(unary operator,只需要一个操作数),也可以当作二元运算符(binary operator,需要两个操作数)。例如,*只有一个操作数的时候,就是间接运算符(indirection operator),而有两个操作数的时候,就是乘号。
简单速记:!>算术运算>关系运算>逻辑运算>赋值运算