c++ - 为什么强制int夸大性能问题?

标签 c++ int boolean

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

forcing value to bool 'true' or 'false' (performance warning)



当我做类似的事情时就会出现:

int a = ...
bool b = (a & (1 << 3);

解决方案是:
bool b = (a & (1 << 3)) != 0;

或使用int代替bool。

问题是:为什么第一种情况会引起性能问题,而第二种情况不会引起性能问题?另外,为什么我没有警告:

if (a & (1 << 3)) {
  ...
}

因为在这种情况下,该值会转换为bool,不是吗?

最佳答案

此警告是在某些情况下使用不正确的单词拼写的过时的Visual Studio 2015编译器。现在听起来更正确

Implicit conversion from int to bool. Possible information loss



Compiler Warning (level 4) C4800

关于c++ - 为什么强制int夸大性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61511382/

相关文章:

c++ - 拆分文件并将数据传递给其他类

c++ - char[] 乱七八糟的输出

java - 检查整数是另一个整数的位旋转

java - 使用 ! JAVA 中的 int

python - 如何将表示 UTF-8 字符的 int 转换为 Unicode 代码点?

java - 如何将文本输入与多个字符串进行比较?

C++ std::bind 重新绑定(bind)函数

android - 如何将多个整数发送到新 Activity ?

javascript - boolean 测试作为参数

java - 如何检查 JTextField 文本到字符串?