信息竞赛中memset函数的用法
memset的介绍
memset()函数主要用来重置数组初值,可赋值0,-1,最大值,最小值。
函数原型
int a[10];
memset(a,0,sizeof(a));
for(int i=0;i<10;i++){
cout<<a[i];
}
输出全部为0;
示例:
最大值:memset(a,127,sizeof(a));(0x7f和0x3f也可以)
最小值:memset(a,128,sizeof(a));
memset赋值规则
memset的赋值是字节赋值,int类型4个字节,如果是0,计算机中存储为00000000 ,数据在计算机中存储的形式是补码形式,
-1:(1000 0001 )原码
(1111 1110)反码
(1111 1111)补码;
1:(0000 00001)原码
(0000 00001)反码
(0000 00001)补码
所以利用memset进行赋值的时候如果赋值为1,则最终结果为000000001 000000001 00000001 000000001转换成十进制就并不是1。
同时也可以赋值最大值和最小值。
128初始化的时候将被看作无符号数即10000000同(-128),这样一个int数就被赋了10000000 10000000 10000000 10000000即-2139062144的补码,与最小值只差一点。