C++ 为什么强制int bool是一个性能问题?

C++ 为什么强制int bool是一个性能问题?,c++,int,boolean,C++,Int,Boolean,在Windows上编译时,编译器会发出以下警告: 强制将值设置为布尔“真”或“假”(性能警告) 当我做以下事情时,它就会出现: inta=。。。 bool b=(a&(1此警告是指过时的Visual Studio 2015编译器在某些上下文中拼写错误。现在听起来更正确 从int到bool的隐式转换。可能会丢失信息 此警告是指过时的Visual Studio 2015编译器在某些上下文中拼写错误。现在听起来更正确 从int到bool的隐式转换。可能会丢失信息 您可以添加编译器信息吗?以及编译标志吗

在Windows上编译时,编译器会发出以下警告:

强制将值设置为布尔“真”或“假”(性能警告)

当我做以下事情时,它就会出现:

inta=。。。

bool b=(a&(1此警告是指过时的Visual Studio 2015编译器在某些上下文中拼写错误。现在听起来更正确

从int到bool的隐式转换。可能会丢失信息


此警告是指过时的Visual Studio 2015编译器在某些上下文中拼写错误。现在听起来更正确

从int到bool的隐式转换。可能会丢失信息


您可以添加编译器信息吗?以及编译标志吗?
如果只测试真实值,它不一定强制转换为
bool
。这回答了您的问题吗?@tadman-代码没有强制转换任何内容。您可以通过查看它来看到。表达式的结果是“上下文转换为布尔”,这可能涉及也可能不涉及生成实际的布尔值,因为计算本身可能会设置适当的处理器标志。@PeteBecker这就是我想说的,尽管你有一个更具体的方法。你能添加编译器信息吗?以及编译标志吗?
if
只测试真实的values,它不一定强制转换为
bool
。这回答了你的问题吗?@tadman-代码没有强制转换任何内容。你可以通过查看它来看到这一点。表达式的结果是“上下文转换为bool”,这可能涉及也可能不涉及生成实际的布尔值,因为计算本身可能会设置适当的处理器标志。@PeteBecker这正是我想说的,尽管你有一个更具体的方法。
bool b = (a & (1 << 3)) != 0;