为什么很多次在用bool变量时都会出现下面这个警告:
warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
我的程序段的内容是:
int CAutoClientView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
bool bLoaded; bLoaded=m_autoServer.CreateDispatch("AutoServer.Document");
if(bLoaded==false)
return -1;

return 0;
}

解决方案 »

  1.   

    可以了,谢谢,那请问bool和BOOL有什么区别呢
      

  2.   

    typedef int BOOL;BOOL实际上就是int型。
      

  3.   

    Return Value
    Nonzero on success; otherwise, it is zero.
      

  4.   

    C++里bool是一种内建数据类型,宽度为一个字节,取值可以为true(1)或false(0),而一个int型在VC里是四个字节。在C++里,当把一个较宽的类型转换为较窄的类型(如需要把int转换为bool)时应该用显示的强制类型转换。
    在你的例程中,CreateDispatch的返回值是BOOL,实际上就是int(?),所以会出现警告。
      

  5.   

    CString str;
    str.Format("C++ bool: size=%d,false=%x,true=%x",sizeof(bool),false,true);
    AfxMessageBox(str);
    str.Format("VC BOOL: size=%d,FALSE=%x,TRUE=%x",sizeof(BOOL),FALSE,TRUE);
    AfxMessageBox(str);
    str.Format("VARIANT(VT_BOOL): size=%d,VARIANT_FALSE=%x,VARIANT_TRUE=%x",
    sizeof(VARIANT_FALSE),VARIANT_FALSE,VARIANT_TRUE);
    AfxMessageBox(str);结论:
    类型     字节长度      假 真 
    bool     1- char       0  1 
    BOOL     4- int        0  1 
    VT_BOOL  2- short int  0  -1