mon*_*ing 6 c floating-point double memset ieee-754
以下代码使用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
如果您处于 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表示为全位零。
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |