C 运算符优先级:
优先级 | 运算符 | 名称或含义 | 结合方向 | 说明 |
---|---|---|---|---|
1 | [] | 数组下标 | 左->右 | |
1 | () | 圆括号 | 左->右 | |
1 | . | (结构体变量的)成员 运算符 | 左->右 | |
1 | -> | (结构体指针)指向结构体成员 运算符 | 左->右 | |
1 | ++ | 自增 (i++ ) | 左->右 | 单目运算符 |
1 | -- | 自减 (i-- ) | 左->右 | 单目运算符 |
2 | ++ | 自增 (++i ) | 右->左 | 单目运算符 |
2 | -- | 自减 (--i ) | 右->左 | 单目运算符 |
2 | - | 负号 | 右->左 | 单目运算符 |
2 | (type) | 强制类型 转换 | 右->左 | |
2 | * | 解引用 | 右->左 | 单目运算符 |
2 | & | 取地址 | 右->左 | 单目运算符 |
2 | ! | 逻辑非 | 右->左 | 单目运算符 |
2 | ~ | 按位取反 | 右->左 | 单目运算符 |
2 | sizeof | 长度 运算符 | 右->左 | |
3 | * | 乘 | 左->右 | 双目运算符 |
3 | / | 除 | 左->右 | 双目运算符 |
3 | % | 余数 (取模) | 左->右 | 双目运算符 |
4 | + | 加 | 左->右 | 双目运算符 |
4 | - | 减 | 左->右 | 双目运算符 |
5 | << | 左移 | 左->右 | 双目运算符 |
5 | >> | 右移 | 左->右 | 双目运算符 |
6 | > | 大于 | 左->右 | 双目运算符 |
6 | >= | 大于等于 | 左->右 | 双目运算符 |
6 | < | 小于 | 左->右 | 双目运算符 |
6 | <= | 小于等于 | 左->右 | 双目运算符 |
7 | == | 等于 | 左->右 | 双目运算符 |
7 | != | 不等于 | 左->右 | 双目运算符 |
8 | & | 按位与 | 左->右 | 双目运算符 |
9 | ^ | 按位异或 | 左->右 | 双目运算符 |
10 | | | 按位或 | 左->右 | 双目运算符 |
11 | && | 逻辑与 | 左->右 | 双目运算符 |
12 | || | 逻辑或 | 左->右 | 双目运算符 |
13 | ? : | 条件 运算符 | 右->左 | 三目运算符 |
14 | = | 赋值 运算符 | 右->左 | |
14 | /= | 除 后赋值 | 右->左 | |
14 | *= | 乘 后赋值 | 右->左 | |
14 | %= | 取模 后赋值 | 右->左 | |
14 | += | 加 后赋值 | 右->左 | |
14 | -= | 减 后赋值 | 右->左 | |
14 | <<= | 左移 后赋值 | 右->左 | |
14 | >>= | 右移 后赋值 | 右->左 | |
14 | &= | 按位与 后赋值 | 右->左 | |
14 | ^= | 按位异或 后赋值 | 右->左 | |
14 | |= | 按位或 后赋值 | 右->左 | |
15 | , | 逗号 运算符 | 左->右 | 从左向右顺序结合 |
说明:
同一
优先级
的运算符
,结合次序
由结合方向
所决定。简单记就是:
!
>算术运算符
>关系运算符
>&&
>||
>赋值运算符