将bool浮起来安全吗?

Zac*_*Lee 2 c++

我想知道直接投射boolfloat是否可以安全使用。

这是我的代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

结果:

False in float : 0                                                                                          
True in float : 1   
Run Code Online (Sandbox Code Playgroud)

结果在所有C ++编译器和平台上都一样吗?

Gov*_*tor 7

是的,它在所有编译器和平台上都应该是安全的,该规则由标准保证。

C ++标准草案第4.9节“浮点整数转换”告诉我们:

如果源类型为bool,则将值false转换为零,将值true转换为1。