注:标号1—15优先级由高到低。
优先级 | 运算符 | 含义 | 操作数个数 | 结合方向 |
1 | ()[] -> . | 圆括号 下标运算符 指向结构体成员运算符 结构体成员运算符 | 自左向右 | |
2 | ! ~ ++ -- - (类型) * & sizeof | 逻辑非 按位取反 自增 自减 负号 类型转换 指针运算符 取地址符 长度运算符 |
1(单目运算符) | 自右至左 |
3 | * / % | 乘法,除法,求余 | 2(双目运算符) | 自左至右 |
4 | + - | 加法 ,减法 | 2(双目运算符) | 自左至右 |
5 | << >> | 左移,右移 | 2(双目运算符) | 自左至右 |
6 | < <= > >= | 关系运算符 | 2(双目运算符) | 自左至右 |
7 | == != | 等于 不等于运算符 | 2(双目运算符) | 自左至右 |
8 | & | 按位与 | 2(双目运算符) | 自左至右 |
9 | ^ | 按位异或 | 2(双目运算符) | 自左至右 |
10 | | | 按位或 | 2(双目运算符) | 自左至右 |
11 | && | 逻辑与运算 | 2(双目运算符) | 自左至右 |
12 | || | 逻辑或运算 | 2(双目运算符) | 自左至右 |
13 | ?: | 条件运算符 | 3(三目运算符) | 自右至左 |
14 | = += -= *= /= %= >>= <<= &= ^= |= | 赋值运算符 |
2 | 自右至左 |
15 | , | 逗号运算符 | 自左至右 |
记忆方法:
初等运算符:()[]-> ->单目运算符->算术运算符->移位运算符->位操作运算符->逻辑运算符(不包括!)->条件运算符->赋值运算符->逗号运算符