memset(a, -1, sizeof(int)) 的理解

来源:互联网 发布:网络刻章在线制作 编辑:程序博客网 时间:2024/05/16 12:38
-1的二进制表示1111... 32个1组成
memset是以字节为单位进行设置的
memset(a, -1, sizeof(int))设置sizeof(int)即4个四节,也就是设置a[0]
由于-1的二进制全是1,所以a[0]的每个字节都的所有位都被设置成1了
所以a[0]还是-1
如果memset(a, 256, sizeof(int))和memset(a, 512, sizeof(int))的话,那么a[0]的值将是0,因为256,512的二进制最后8位全是0
所以-1.256,512等二进制最后8位全是0的数是特例可用,其他的memset只能用0
#include <iostream>using namespace std;int main(){   int f[5]={};        memset(f,-1,sizeof(f));for(int i = 0; i != 5; i++)cout<<f[i]<<" ";memset(f,1,sizeof(f));cout<<endl;for(int i = 0; i != 5; i++)cout<<f[i]<<" ";system("pause");return 0;}


1 0