Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C memset(ary,0,length)是在双数组中输入零的一种便携式方法吗_C_Floating Point_Double_Ieee 754_Memset - Fatal编程技术网

C memset(ary,0,length)是在双数组中输入零的一种便携式方法吗

C memset(ary,0,length)是在双数组中输入零的一种便携式方法吗,c,floating-point,double,ieee-754,memset,C,Floating Point,Double,Ieee 754,Memset,可能重复: 下面的代码使用memset将所有位设置为零 int length = 5; double *array = (double *) malloc(sizeof(double)*length); memset(array,0,sizeof(double)*length); for(int i=0;i<length;i++) if(array[i]!=0.0) fprintf(stderr,"not zero in: %d",i); int-length=5; dou

可能重复:

下面的代码使用memset将所有位设置为零

int length = 5;
double *array = (double *) malloc(sizeof(double)*length);
memset(array,0,sizeof(double)*length);
for(int i=0;i<length;i++)
  if(array[i]!=0.0)
    fprintf(stderr,"not zero in: %d",i);
int-length=5;
double*数组=(double*)malloc(sizeof(double)*长度);
memset(数组,0,大小f(双)*长度);

对于(int i=0;i使用
::std::fill(数组,数组+长度,0.0);

它不可移植。只需使用循环即可。
您不需要强制转换malloc返回值。

如果您在C99环境中,则无法得到任何保证。浮点数的表示形式在§5.2.4.2.2中有定义,但这只是逻辑和数学表示形式。该部分甚至没有提到浮点数是如何以字节形式存储的。相反,它在脚注中说:

浮点模型旨在阐明每个浮点特性的描述,不要求实现的浮点算法相同。 此外,§6.2.6.1规定:

除本款规定外,所有类型的表示均未指定。 在该子条款的其余部分中,没有提到浮点类型


总之,不能保证
0.0
表示为所有位为零。

Dupe AFAIK,从技术上讲,
0.0
不需要用所有位为零的位模式表示。遵循这个方法,如果它在平台上以这种方式工作,我希望
std::fill()
的实现调用
std::memset()< C++ >内部代码。@马修,你认为这有什么区别?<代码>新< /代码>不是C.的一部分,你需要使用Maloc或CaloC或者将标签改回C++。原因是JeremeyP是的,抱歉。FILIN()只在容器不提供随机访问时才有用。