1、按位与&:1 & X = X, 0 & X = 0,可以判断某一位是0还是1,可以将某一位置0
按位或 |:1 | X = 1,0 | X = X,可以将某一位置1
异或^: 0 ^ X = X,1 ^ X = ~X
2、位移
左移,移动K位等价于乘以2^K,右边补0
右移,移动K位等价于除以2^K,左边补上符合位
3、地址运算符 & *
4、自增(自减)运算符
在运算中,a++将旧值参与运算,a++ < 10等价于temp=a,a = a+1,temp < 10
而++a将新值参与运算,++a < 10等价于 a = a+1,a < 10
5、逗号运算符:最右边的表达式作为运算结果,另外,注意以下例子:
#include <stdio.h> int main() { int a = 0; int b = 0;
printf("%d %d %d\n", b=a+++(a+++2),b,a=b++); //注意,在这个函数中,是3个表达式是从右向左执行的 printf("%d %d\n",a,b); return 0; }
运行结果:
2 2 0
2 2
总结:在同一个语句中,尽量不让同一个变量多次改变值
问题:以后在深入学习位运算,可以参见《C primer plus》的第15章