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 |
, |
逗号运算符 |
自左向右 |
顺序求值运算 |