熟记运算符优先级别技巧:
1、小括号
()
,中括号
[]
,结构成员访问操作符
->
和
.
优先级别最高!
2、所有单目运算符
~ ! ++ –- + - * & (type) sizeof
优先级别第二。
3、之后往下排:算术运算符 (
* / % + -
)、移位运算(
<< >>
)、关系算符(
> >= < <= == !=
)。
4、对于关系运算符:
==
和
!=
同一级别并且低于其它关系运算符。
5、关系运算符之后就是逻辑运算符:按位逻辑运算符(
& ^ |
)优先级别大于顺序逻辑运算符(
&& ||
),与运算大于或运算,按位异或介于按位与和按位或之间。
6、最后三级别:条件运算符(三目运算符
? :
)、各种赋值运算符、逗号表达式。
最后附上一张C语言运算符表
运算符 | 解释 | 结合方式 |
---|---|---|
() [] -> . | 括号(函数),数组,两种结构成员访问 | 自左向右 |
! ~ ++ -- + - * & (类型) sizeof | 取反,按位取反,自增,自减,正负号,间接取值,取地址,类型转换,求大小 | 自右向左 |
* / % | 乘,除,取模 | 自左向右 |
+ - | 加,减 | 自左向右 |
<< >> | 左移,右移 | 自左向右 |
< <= >= > | 小于,小于等于,大于等于,大于 | 自左向右 |
== != | 等于,不等于 | 自左向右 |
& | 按位与 | 自左向右 |
^ | 按位异或 | 自左向右 |
| | 按位或 | 自左向右 |
&& | 逻辑与 | 自左向右 |
|| | 逻辑或 | 自左向右 |
? : | 条件运算符 | 自右向左 |
= += -= *= /= &= ^= |= <<= >>= | 各种赋值 | 自右向左 |
, | 逗号运算符 | 自左向右 |