memset的用法

1.赋极大值

memset(a,0x3f,sizeof(a));

2.赋0

memset(a,0,sizeof(a));

3.赋-1

memset(a,-1,sizeof(a));

赋值原理:

memset是按照字节赋值的,即将每个字节都赋值成要求赋予的值。但是,1个int型数据并不是1个字节的是4个字节的,所以对除了0,-1以外的整型用memset来赋值得到的结果不是赋的那个值。而1个char型数据是一个字节的,所以对于char型数据可以直接用memset来赋值。

0x代表以16进制形式表示的常数。将0x3f赋值给整型a,3f代表16进制下的2bit,而1byte= 8bit(位),即将0x3f3f3f3f的值赋值给int a。

那么这个值是多少呢?

0x3f  =  0011 1111

0x3f3f3f3f = 0011 1111 0011 1111 0011 1111 0011 1111      第一位是符号位,0代表正数,1代表负数,所以该值是小于int上限一半的数,即该值乘2不会超过上限。

0x3f3f3f3f的十进制是1061109567,是10^9级别的,整型的范围是-2147483648~2147483647(-2^31~2^31-1)是10的九次方级别的,所以在整型范围内该值为极大值。

                                      数值型和字符型数据的字节数和数值                                                        
整型 [signed] int 4 byte
无符号整型 unsigned [int] 4 byte
短整型 short [int] 2 byte
无符号短整型 unsigned short [int] 2 byte
长整型 long [int] 4 byte
无符号长整型 unsigned long [int] 4 byte
字符型 [signed] char 1 byte
无符号字符型 unsigned char 1 byte
单精度型 float 4 byte
双精度型 double 8 byte
长双精度型 long double 8 byte
原文地址:https://www.cnblogs.com/zuiaimiusi/p/10631900.html