尾插
头删
尾删
清理节点
一,共用体
1,共用体中成员占用共同的内存空间,彼此间相互覆盖,成员地址相同,值为最后传入的值。
sizeof(d)为4
2,判断大小端存储
指针方法判断大小端存储
二,枚举类型
枚举类型与整型兼容
enum Week声明week取值范围
sizeof(w)为4;
213行Mon = 4,则后面值为依次加1,但sun仍为0。
三,typedef定义类型
为已有数据类型起别名
typedef int INT; INT为类型名
typedef int ARRAY[10]
ARRAY a; a为一个整型一维数组。
四,位运算
操作数为整型或与整型兼容
按位与运算符 [ & ]
运算规则:依次比较两个二进制数的每一位,全部为1则为1,否则为0的规则,依次计算出一个新的二进制数:
即:0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1
例: 39 & 21 --> 0010 0111 & 0001 0101 --> 0000 0101
按位或运算符 [ | ]
运算规则:依次比较两个二进制数的每一位,只要有一个为1则为1,否则为0的规则,依次计算出一个新的二进制数:
即:0 | 0= 0 ,0 | 1= 1,1 | 0= 1, 1 | 1= 1
例: 39 | 21 --> 0010 0111 | 0001 0101 --> 0011 0111
异或运算符 [ ^ ]
运算规则:依次比较两个二进制数的每一位,按照相同为0,不同为1的规则,依次计算出一个新的二进制数:
即:0 ^ 0= 0 ,0 ^ 1= 1,1 ^ 0= 1, 1 ^ 1= 1
例: 39 ^ 21 --> 0010 0111 ^ 0001 0101 --> 0011 0010
取反运算符 [ ~ ]
运算规则:对于二进制数的每一位,1变0,0变1,得到一个新的二进制数:
即:~0 = 1 , ~1= 0
i = 3,(011);
~i = 0xFFFFFFFC = i ^ 0xFFFFFFFF
<<: 左移、>> : 右移
箭头指向哪就是向哪移。左移之后右边补0,右移之后在左边补0
结论: 对于正数而言,其实左移和右移n位就相当于乘以或者除以2的n次方。
十进制的5,该数二进制为 0000 0101,将该数左移3为0010 1000,转换成十进制为 40, 验证了上面的结论:5左移三位就等于5乘以2的三次方等于40。
十进制的40,右移三位就相当于除以8(2的三次方)结果为5。
可以用来二进制计数1的个数