Won*_*lMe 1 c++ type-conversion implicit-conversion c++11
在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;
Run Code Online (Sandbox Code Playgroud)
哪一个现在正确?
f = d[0];f = (float)d[0];f = static_cast<float>(d[0]);提前致谢!
它们都归结为同样的事情,数组的使用是一个红色的鲱鱼.你确实可以写
float f = d;
Run Code Online (Sandbox Code Playgroud)
一些人认为,static_cast使代码更具可读性,因为它非常清晰.如果使用不太冗长的形式,它也可以打败某些编译器可能会发出的警告.
当然,因为a double是超集float,你可能会失去精确度.最后,请注意
float f1 = whatever;
double d1 = f1;
float f2 = d1;
Run Code Online (Sandbox Code Playgroud)
,C++标准坚持认为f1并且f2必须是相同的值.
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |