警告C4800:'int':强制值为bool'true'或'false'(性能警告)

use*_*184 30 c++ visual-c++-2008 visual-c++-2010

我的代码中有这个问题:

bool CBase::isNumber()
{
return (id & MID_NUMBER);
}

bool CBase::isVar()
{
return (id & MID_VARIABLE);
}

bool CBase::isSymbol()
{
return (id & MID_SYMBOL);
}
Run Code Online (Sandbox Code Playgroud)

Mar*_* A. 53

仅供参考:演员不会通过设计隐藏警告.

就像是

return (id & MID_NUMBER) != 0;
Run Code Online (Sandbox Code Playgroud)

应该清楚地说明"我想检查这个值是否为零"并让编译器满意


cup*_*cup 2

使用 !!成语eg

bool CBase::isNumber()
{
    return !!(id & MID_NUMBER);
}
Run Code Online (Sandbox Code Playgroud)

  • @deviantfan 警告本身是无用的 (9认同)
  • @deviantfan:警告与语义无关,它与性能有关,这是似是而非的。 (4认同)
  • 只是为了取悦编译器!? (2认同)