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