memset赋值0和-1,还能赋其他值吗?
来源:互联网 发布:ios视频制作软件 编辑:程序博客网 时间:2024/06/10 09:49
今天用memset时发现它不能给一个数组赋值1,于是就花时间了解了一下它。先上msdn的介绍:
memset
Sets buffers to a specified character.
void *memset( void *dest, intc, size_tcount );
Return Value
memset returns the value ofdest.
Parameters
dest
Pointer to destination
c
Character to set
count
Number of characters
Remarks
The memset function sets the firstcount bytes ofdest to the character c.
最后一句翻译过来就是:memset函数将dest所指的前count字节的内存空间赋值为c。先看一段程序吧
很容易知道0和-1的二进制表示分别为0000 0000以及1111 1111,大家注意到1个int变量是占4个字节的,而memset每次只能给1个字节的内存单元赋值,但是因为刚好0000 0000 和1111 1111的高位低位都一样,所以memset就“凑巧”完成了每4个字节赋32位0和1,也就是十进制的0和-1.那换成其他的行吗?再看一段程序。
因为1的二进制表示为0000 0001 所以4个字节连起来就是0000 0001 0000 0001 0000 0001 0000 00001,转换成10进制也就是16843009。这就说明并不是每一个10进制数都能正确用memset赋值。大家可以多尝试几个数。
0 0
- memset赋值0和-1,还能赋其他值吗?
- memset 赋值
- memset赋值
- memset 赋值
- memset 赋值
- memset赋值问题
- memset函数赋值问题
- ZeroMemory、memset 和 “={0}”
- ZeroMemory、memset 和 “={0}”
- 关于memset赋值无穷大无穷小
- memset 按字节赋值注意事项
- 关于memset赋值的问题
- memset是对字节赋值
- C++中fill和memset对某一内存单元(如数组)的一次性赋值
- ZeroMemory、memset和 “={0}” 的区别
- memset(&struct, 0, sizeof(struct))后给结构体中string赋值出错
- 字符数组赋值,以及memset用法注意
- 1 memset
- String,StringBuffer与StringBuilder的区别??
- C++之函数模版和类模版
- PostGIS,ArcSDE For PostgreSQL,ArcEngine的关系与结合
- tushare 股票分类数据
- python 编码 乱码问题
- memset赋值0和-1,还能赋其他值吗?
- 二叉树基础题(三)
- 树莓派+RC522模块
- 4月8日,DemogetProperties,每日20行。
- FreeCodeCamp学习--Where do I belong
- 博主github项目分享
- 震动传感器设计
- 服务发现
- The Galactic Olympics ///dp