gpt4 book ai didi

C++双指针数组到 float 的转换

转载 作者:行者123 更新时间:2023-11-30 00:44:06 26 4
gpt4 key购买 nike

在 C++ 中将 double 转换为 float 的正确方法是什么。转换是隐式的吗?

问题 1:考虑 double d = 5.0;float f;

哪个是正确的?

  • f = d;
  • f = (float)d;
  • f = static_cast<float>(d);

问题 2:现在考虑我们有

char *buffer = readAllBuffer(); 
double *d = (double*)(buffer + offset);
float f;

现在哪个是正确的?

  • f = d[0];
  • f = (float)d[0];
  • f = static_cast<float>(d[0]);

提前致谢!

最佳答案

它们都归结为同一件事,数组的使用是一个转移注意力的问题。你确实可以写

float f = d;

一些人争论说 static_cast 使代码更加可读,因为它非常清晰。如果使用不那么长篇大论的形式,它还可以消除某些编译器可能发出的警告。

当然,由于 doublefloat 的超集,您可能会失去精度。最后,请注意对于

float f1 = whatever;
double d1 = f1;
float f2 = d1;

,C++标准坚持f1f2必须是相同的值。

关于C++双指针数组到 float 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50682097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com