1 基本运算符
- 加法运算符: +
- 减法运算符: -
- 乘法运算符: *
- 除法运算符: /
- 取模运算符: %
- 赋值运算符: =
- 负数运算符: -
2 自增自减运算符
- 自增运算符: ++
- 自减运算符: --
放在变量的前后有区别,以自增运算符为例
- a++ 先返回 a 的值,然后 a 自增
- ++a 先自增 a 的值,然后返回 a
3 位运算符
位运算符分为以下类型
- 左移运算符: << , 将二进制往左移动一位,后面补 0
- 右移运算符: >> ,将二进制网右移动一位,左侧补 0
- 按位与运算: & ,将二进制的每一个 bit 位进行 & 操作,都是 1 则结果为 1,其余为 0
- 按位或运算: | ,将二进制的每一个 bit 位进行 & 操作,其中一个是 1 则结果为 1,其余为 0
- 按位异或符: ^ , 将二进制的每一个 bit 位进行比较,如果相同则结果为 0,如果不同则结果为 1
- 按位非运算: ~ , 将每一个 bit 位置反
按位非举个栗子:
- int a = 2; a = ~a; a 最终为 -3;
- int a 的二进制原码为:00000000 00000000 00000000 00000010;
- 按位非取反后原码变为:11111111 11111111 11111111 11111101;
- 要变成补码需要先变成反码后 +1 因此补码为:10000000 00000000 00000000 00000010 + 00000000 00000000 00000000 00000001 = 10000000 00000000 00000000 00000011, 计算得出 -3.
4 逻辑运算符
常见的逻辑运算符有:<、 <=、>=、>、!=、==、&&、||、?:,和其他语言基本一致
5 运算符优先级
运算符的优先级,从上往下依次降低
运算符 | 描述 |
---|---|
() | 括号运算符 |
[]、.、-> | 数组、结构体、指向结构体成员的指针运算符 |
++、-- | 自增、自减运算符 |
+、- | 正负号、加减运算符 |
!、~ | 逻辑非、按位取反运算符 |
*、/、% | 乘、除、取模运算符 |
+、- | 加、减运算符 |
<<、>> | 左移、右移运算符 |
<、<=、>、>= | 关系运算符 |
==、!= | 相等、不等运算符 |
& | 按位与运算符 |
^ | 按位异或运算符 |
| | 按位或运算符 |
&& | 逻辑与运算符 |
|| | 逻辑或运算符 |
?: | 条件运算符 |
=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|= | 赋值运算符 |