C语言知识点
!与~的区别
!: 代表值得取反,对于整形变量,只要不为0,使用 ! 取反都是0,0取反就是1。就像 bool 只有真假一样。
~: 代表位的取反,对于整形变量,对每一个二进制位进行取反,0变1,1变0。
举例:
在我的电脑中,对于正数,int型变量5的二进制表示为0000 0101,~5的变换如下:
1、按位取反:1111 1010
2、符号位为1,变换后为负数,需要按负数规则转换,取反加一:1000 0110
3、转换为十进制:~5 = -6
对于负数,int型变量-3的二进制表示为1111 1101,~-3的变换如下:
1、按位取反:0000 0010
2、转换为十进制:~-3 = 2
memset的使用
memset是以字节为单位,初始化内存块,而int型占4字节,实际使用很坑,一定要注意!!!
int a[8];
memset(a, 1, sizeof a); //0x01010101,即16843009
memset(a, -1, sizeof a); //0xFFFFFFFF,即-1
memset(a, 0, sizeof a); //0x00000000,即0
memset(a, 0x3f, sizeof a); //0x3f3f3f3f,即1061109567
第四个0x3F一般可以用来将数组初始化为无穷大,好处多多,自己体会。