C语言运算符的优先级顺序从高到低排列如下:
1. **括号与成员访问**
- `()` 函数调用
- `[]` 数组下标
- `.` 结构体成员访问
- `->` 结构体指针成员访问
2. **单目运算符**
- `++` 自增(后缀)
- `--` 自减(后缀)
- `++` 自增(前缀)
- `--` 自减(前缀)
- `+` 正号
- `-` 负号
- `!` 逻辑非
- `~` 按位取反
- `(type)` 强制类型转换
- `*` 解引用
- `&` 取地址
- `sizeof` 计算大小
3. **算术运算符**
- `*` 乘法
- `/` 除法
- `%` 取模
- `+` 加法
- `-` 减法
4. **移位运算符**
- `<<` 左移
- `>>` 右移
5. **关系运算符**
- `<` 小于
- `<=` 小于等于
- `>` 大于
- `>=` 大于等于
6. **相等运算符**
- `==` 等于
- `!=` 不等于
7. **位运算符**
- `&` 按位与
- `^` 按位异或
- `|` 按位或
8. **逻辑运算符**
- `&&` 逻辑与
- `||` 逻辑或
9. **条件运算符**
- `?:` 三目运算符
10. **赋值运算符**
- `=` 赋值
- `+=` 复合赋值
- `-=` 复合赋值
- 其他复合赋值运算符(如 `*=`, `/=`, `%=` 等)
11. **逗号运算符**
- `,` 逗号(优先级最低)
这个顺序可以帮助你在编写复杂表达式时避免歧义,建议用括号明确优先级。