C运算符的优先级与结合性
| 优先级 | 运算符 | 含义 | 运算类型 | 结合方向 |
|---|---|---|---|---|
| 1 | () [] -> . ++ -- | 圆括号、函数参数表 数组元素下标 指向结构体成员 引用结构体成员 后缀增1、后缀减1 | — | 自左向右 |
| 2 | ! ~ ++ -- - * & (类型标识符) sizeof | 逻辑非 按位取反 前缀增1、前缀减1 取负 间接寻址运算符 取地址运算符 强制类型转换运算符 计算字节数运算符 | 单目运算符 | 自右向左 |
| 3 | * / % | 乘 除 整数求余 | 双目算数运算 | 自左向右 |
| 4 | + - | 加 减 | 双目算数运算 | 自左向右 |
| 5 | << >> | 左移 右移 | 位运算 | 自左向右 |
| 6 | < <= > >= | 小于、小于等于 大于、大于等于 | 关系运算 | 自左向右 |
| 7 | == != | 等于 不等于 | 关系运算 | 自左向右 |
| 8 | & | 按位与 | 位运算 | 自左向右 |
| 9 | ^ | 按位异或 | 位运算 | 自左向右 |
| 10 | | | 按位或 | 位运算 | 自左向右 |
| 11 | && | 逻辑与 | 逻辑运算 | 自左向右 |
| 12 | || | 逻辑或 | 逻辑运算 | 自左向右 |
| 13 | ?: | 条件运算符 | 三目运算符 | 自右向左 |
| 14 | = += -= *= /= %= &= ^= |= <<= >>= | 赋值运算符 复合的赋值运算符 | 双目运算 | 自右向左 |
| 15 | , | 逗号运算符 | 顺序求值运算 | 自左向右 |