为什么强制 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
在 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