有时我必须从无符号整数值转换为float.例如,我的图形引擎接受一个SetScale(float x, float y, float z)浮点数,我有一个具有一定大小的对象unsigned int.我想将unsigned int转换为float以正确地缩放实体(该示例非常具体,但我希望您明白这一点).
现在,我通常做的是:
unsigned int size = 5;
float scale = float(size);
My3DObject->SetScale(scale , scale , scale);
Run Code Online (Sandbox Code Playgroud)
在某些假设下,这是一种良好的做法吗(见注释)?有没有比丢弃代码更好的方法float()?
注意:我无法触摸图形API.我必须使用SetScale()函数,它接受浮点数.而且,我也无法触及大小,它必须是一个无符号的int.我确信还有很多其他例子都有同样的"问题".以上内容可以应用于任何需要完成的转换,而您作为程序员在此事上几乎没有选择.
我的偏好是使用static_cast:
float scale = static_cast<float>(size);
Run Code Online (Sandbox Code Playgroud)
但你正在做的是功能相同和罚款.
有从隐式转换unsigned int到float,所以剧组严格不必要的.
如果您的编译器发出警告,那么使用强制转换来消除警告并没有什么问题.请注意,如果size非常大,它可能无法完全由a表示float.
| 归档时间: |
|
| 查看次数: |
5207 次 |
| 最近记录: |