memset(ary,0,length)是一种在双数组中输入零的可移植方式

mon*_*ing 6 c floating-point double memset 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);
Run Code Online (Sandbox Code Playgroud)

我可以假设这适用于所有平台吗?

double数据类型是否始终符合ieee-754标准?

感谢您的回复,并感谢:: fill template命令.但我的问题更多的是双数据类型.

也许我应该为纯粹的c写我的问题.但无论如何,谢谢.

编辑:将代码和标签更改为c

Rol*_*lig 4

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

\n\n
\n浮点模型旨在澄清每个浮点特性的描述,并不要求实现的浮点算法相同。\n
\n\n

此外,\xc2\xa7 6.2.6.1 说:

\n\n
\n除本子条款中所述外,所有类型的表示形式均未指定。\n
\n\n

在该子条款的其余部分中,没有提到浮点类型。

\n\n

总之,不能保证 a0.0表示为全位零。

\n