1. i++与++i

如果有表达式 a = i++ ;它等价于 a = i;i = i + 1;

如果有表达式 a = ++i;它等价于i = i + 1;a = i;

++i和i++都是分两步完成的。因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i =;a =b,即++i是一个左值(可被寻址的值);i++ 的后面一步是自增,不是左值。


2. |=(位或运算符)、&=(位与运算符)、^=(位异或运算)、~=(位非运算符)

|= 运算符和 += 这一类的运算符一样,拆解开就是 a = a | b;

运算规则:两个数都转为二进制,然后从高位开始比较,两个数只要有一个为1则为1,否则就为0。

&= 运算符和 += 这一类的运算符一样,拆解开就是 a = a & b;

运算规则:两个数都转为二进制,然后从高位开始比较,如果两个数都为1则为1,否则为0。

^= 运算符和 += 这一类的运算符一样,拆解开就是 a = a^b;

运算规则是:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。

同一个字符进行两次异或运算就会回到原来的值。

a = a ^ b;     // 此时b不变,a=a^b,b=b
b = a ^ b;     // 此时b=a^b^b,所以b=a
a = a ^ b;     // 此时a=a^b^a,所以a=b

~= 位非运算符

运算规则:如果位为0,结果是1,如果位为1,结果是0.

3.<<<,>>>,>>,<<

1、在正数、负数的有符号左移中,移动的位置是补0的
2、在正数的有符号右移中,移动位置补0,负数的有符号右移,移动位置补1
3、在正数、负数的无符号>>>右移中,移动的位置都是补0