[英]Is it safe to cast bool to float?
我想知道是否可以直接将bool
为float
使用。
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
bool b1 = false;
bool b2 = true;
float f1 = static_cast<float>(b1);
float f2 = static_cast<float>(b2);
cout << "False in float : " << f1 << endl;
cout << "True in float : " << f2 << endl;
return 0;
}
结果:
False in float : 0
True in float : 1
在所有C ++编译器和平台中,结果是否相同?
是的,自第一个C ++标准ISO / IEC 14882:1998以来,这已被允许和定义。
4.9浮动积分转换[conv.fpint]说:
- 可以将整数类型或枚举类型的右值转换为浮点类型的右值。 如果可能,结果是准确的。 否则,它是下一个较低或较高可表示值的实现定义选择。 [ 注意:如果积分值不能完全表示为浮点类型的值,则会发生精度损失。 如果源类型为
bool
,则将值false
转换为零,将值true
转换为一。
(强调我的。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.