【发布时间】:2010-06-01 08:32:24
【问题描述】:
可能重复:
What is faster/prefered memset or for loop to zero out an array of doubles
以下代码使用 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);
我可以假设这适用于所有平台吗?
double 数据类型是否始终符合 ieee-754 标准?
感谢您的回复, 并感谢 ::fill 模板命令。但我的问题更多的是双数据类型。
也许我应该为纯 c 写我的问题。 不过还是谢谢啦。
编辑:将代码和标签更改为 c
【问题讨论】:
-
AFAIK,从技术上讲,
0.0不需要由所有位为零的位模式表示。关注Viktor's advice,如果它在平台上以这种方式工作,我希望std::fill()的实现能够在内部调用std::memset()。 -
@Matthew 你认为这有什么不同?
-
new不是 C 的一部分。您需要使用 malloc 或 calloc 或将标记更改回 C++。 -
@JeremeyP 是的,抱歉。
标签: c floating-point double ieee-754 memset