C语言运算符优先级表
运算符优先级与结合性优先级 | 运算符 | 描述 | 结合性 |
1 | ++,-- | 后缀自增,自减 | 从左往右 |
() | 函数调用 | ||
[] | 数组下标 | ||
. | 结构体与联合体访问成员 | ||
-> | 结构体与联合体通过指针访问成员 | ||
(type){list} | 复合字面量(C99) | ||
2 | ++,-- | 前缀自增,自减 | 从右往左 |
+,- | 正,负 | ||
!,~ | 逻辑非与逐位非 | ||
(type) | 强制类型转换 | ||
* | 解引用 | ||
& | 取址 | ||
sizeof | 获取某个数据类型所占用空间字节数 | ||
_Alignof | 对齐要求(C11) | ||
3 | *,/,% | 乘法、除法及取余 | 从左往右 |
4 | +,- | 加法、减法 | |
5 | <<,>> | 逐位左移及右移 | |
6 | <,<=,>,>= | 小于,小于等于,大于,大于等于 | |
7 | ==,!= | 等于,不等于 | |
8 | & | 逐位与 | |
9 | ^ | 逐位异或 | |
10 | | | 逐位或 | |
11 | && | 逻辑与 | |
12 | || | 逻辑或 | |
13 | ?: | 三元条件 | 从右往左 |
14 | = | 简单赋值 | |
+=,-= | 和,差赋值 | ||
*=,/=,%= | 积、商及取余赋值 | ||
<<=,>>= | 逐位左移,右移赋值 | ||
&=,^=,|= | 逐位与、异或及或赋值 | ||
15 | , | 逗号 | 从左往右 |