关于使用memset(a,0xff,sizeof(a)),输出-1的问题
2017-08-14 17:31
393 查看
首先先要了解memset函数的功能:
将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,其返回值为指向S的指针。
它是以字节进行赋值的,具体可以看这段代码:
这个结果输出的是一个较大的数522133279,这个因为它是以字节进行赋值的,它将int所占的四个字节的每一个字节都赋成了0x1f,如果赋值过程中要赋值的哪个数超过了255,会屏蔽掉前面的的数字,只取一个字节的长度的数,即8个bite位,这个可以查看下面这个代码:
将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,其返回值为指向S的指针。
它是以字节进行赋值的,具体可以看这段代码:
#include<stdio.h> #include<string.h> int main() { int s[50]; memset(s,0x1f,sizeof(s)); for(int i=0;i<5;i++) printf("%d\n",s[i]); return 0; }
这个结果输出的是一个较大的数522133279,这个因为它是以字节进行赋值的,它将int所占的四个字节的每一个字节都赋成了0x1f,如果赋值过程中要赋值的哪个数超过了255,会屏蔽掉前面的的数字,只取一个字节的长度的数,即8个bite位,这个可以查看下面这个代码:
#include<stdio.h> #include<string.h> #define inf 0xff int main() { int s[50]; memset(s,0x1f,sizeof(s)); for(int i=0;i<5;i++) printf("%d\n",s[i]); memset(s,0x1f1f1f1f,sizeof(s)); for(int i=0;i<5;i++) printf("%d\n",s[i]); return 0; }
相关文章推荐
- 关于vc6.0下使用DirectX 9的中输入输出设备编译不同过的问题
- 关于ActiveReport使用ActivexViewer输出时,客户端不会提示下载控件的问题.
- 关于THINKPHP中使用kindetior编辑器输出的问题
- 关于STL模板的使用效率与控制输出时最后不加空格问题
- 转:关于使用fputc输出,文件结尾多一个字符的问题
- 关于空格和回车带来的输入输出不一致问题,使用了一个奇怪的replace
- 关于在构造函数中使用memset或者ZeroMemery问题
- 关于VS2013 mfc使用Edit control控件显示输出内容问题
- 一个关于memset使用的问题
- 【随笔】关于算法竞赛中使用文件输入输出和文件名的规定等问题
- C++中关于标准输出流cout中使用递增运算符的问题
- 关于使用System.out.println()向控制台输出数据和使用out.println()向页面输出数据效率的问题
- 带输出参数的存储过程的使用及在C#中调用问题
- 关于JSP中字符串输出问题
- 关于使用VS.Net2003调试器出现的问题及相关解决方法
- [导入]关于用xslt输出xml的问题
- 关于在VB中使用Access数据库出现的问题
- 关于GetRecordCount函数的使用问题
- C#写的计数器控件 - 一个关于相对路径使用的问题
- 请教高手:关于在delphi中编译时对输出文件分类的问题?