memset头文件

memset()函数的赋值问题

喜欢而已 提交于 2019-11-27 08:21:39
用memset进行赋值操作 int a[3]; char b[3]; memset(a,0,sizeof(a)); 0 0 0 memset(a,1,sizeof(a)); 16843009 16843009 16843009 memset(a,-1,sizeof(a)); -1 -1 -1 memset(b,'a',sizeof(b)); a a a 参考表 sizeof(char)=1; sizeof(int)=4; sizeof(float)=4; sizeof(long)=4; sizeof(long long)=8; sizeof(double)=8; 下面对这个现象进行解释 memset是按照字节进行赋值的 它是对要进行赋值的变量的后八位二进制进行赋值 因为2^8等于256,已经完全适用于字符的ASCII了 但是呢,对于整数来说 对于1来说 1的二进制是00000000 00000000 00000000 00000001 去后面的8位00000001 而int型占4个字节,当初话的时候是进行每个字节变成00000001 就会变成0x01010101 00000001 00000001 00000001 00000001 十进制是16843009 再来看0 二进制是00000000 00000000 00000000 00000000, 取后8位00000000