是否可以安全地将memcpy从双精度数组转换为浮点数组?
发布于 2010-06-02 23:19:15
这取决于你想要什么。这些值肯定不会被保留。如果需要,可以使用std::copy
。
#include <algorithm>
int main()
{
double a[] = {1.618, 3.1416, 2.7, 0.707, 1.0};
float b[5];
std::copy(a, a + 5, b);
}
发布于 2010-06-03 00:52:11
一般情况下-不是。
在特定情况下,在给定的平台上,float
和double
的表示可能相同,并且复制将会成功。但不管怎样,这都没有任何实际意义。
发布于 2018-12-19 06:07:54
memcpy
是类型不可知的(只看到字节),不能进行类型转换。就像@AzP说的那样使用std::transform
:
std::transform(a, a + 5, b, [](double d) -> float {return float(d);});
https://stackoverflow.com/questions/2959069
复制相似问题