优先级 | 运算符 | 名称或含义 | 运算符类型 | 结合方向 | 补充 | |
1 | [] | 数组下标 | 特殊 运算符 | 从左往右 | 单 目 运 算 符 | |
() | 里面为表达式或函数名 | |||||
. | 成员选择(对象) | |||||
-> | 成员选择(指针) | |||||
2 | - | 符号运算符 | 从右往左 | 双 目 运 算 符 | ||
~ | 二位取反运算符(位非运算符) | |||||
++ | 自增运算符 | 算数 运算符 | ||||
-- | 自减运算符 | |||||
* | 取值运算符 | 指针 运算符 | 取指针所指向单元存储的值 | |||
& | 取地址运算符 | |||||
! | 逻辑非运算符 | |||||
(数据 类型) | 类型转换 | |||||
sizeof | 长度运算符 | |||||
3 | / | 除(算数运算符) | 算术 运算符 | 从左往右 | ||
* | 乘 | |||||
% | 取余 | %两侧数据均为整型, 当与负数一起使用时,通常返回一个与除数同号的余数值: 例:9 % 2 = 1,9 % -2 = 1, -9 % 2 = -1,-9 % -2 = -1 | ||||
4 | + | 加 | ||||
- | 减 | |||||
5 | << | 左移 | 形式:(变量<<表达式) | |||
>> | 右移 | (变量>>表达式) | ||||
>>> | 无符号右移 | |||||
6 | > | 大于 | 关系 运算符 | |||
< | 小于 | |||||
>= | 大于等于 | |||||
<= | 小于等于 | |||||
7 | == | 等于 | ||||
!= | 不等于 | |||||
8 | & | 按位与 | 1 & 1 = 1, 1 | 1 = 1, 1 ^ 1 = 0 1 & 0 = 0, 1 | 0 = 1, 1 ^ 0 = 1 0 & 1 = 0, 0 | 1 = 1, 0 ^ 1 = 1 0 & 0 = 0, 0 | 0 = 0, 0 ^ 0 = 0 | |||
9 | ^ | 按位异或(两侧数据不同时结果为1) | ||||
10 | | | 按位或 | ||||
11 | && | 逻辑与 | ||||
12 | || | 逻辑或 | ||||
13 | ?: | 条件运算符 | 从右往左 | 三目运算符 | 表达式1?表达式2:表达式3 | |
14 | = | 赋值运算符 | 赋值 运算符 | 均为左变量右表达式 | ||
/= | 除后赋值 | |||||
*= | 乘后赋值 | |||||
%= | 取余后赋值 | |||||
+= | 加后赋值 | |||||
-= | 减后赋值 | |||||
<<= | 左移后赋值 | |||||
>>= | 右移后赋值 | |||||
&= | 按位与后赋值 | |||||
^= | 按位异或后赋值 | |||||
|= | 按位或后赋值 | |||||
15 | , | 逗号运算符 | 从左到右 |
注:
1. 同一级运算符运算时按结合顺序计算
2.左移右移运算符
(1)左移运算符m<<n,表示把m左移n位。左移n位的时候,最左边的n位数将被丢弃,同时在最右边补上n个0。例如:
例: 00001010<<2 = 00101000
10001010<<3=01010000
(2)右移运算符m>>n表示把m右移n位。右移n位的时候,最右边的n位将被丢弃。同时在最左边补上n个符号位。例如:
例: 00001010>>2=00000010
10001010>>3=11110001
(3)无符号右移运算符m>>>n , 用0补位。例如:
例: 10001010>>>3=00010001