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

Why is forcing int to bool a performance issue?

在 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