void main() {
//BOOL bRet = -1; //输出的是"ERROR\n" "true\n"
//BOOL bRet = 0; //输出的是"FALSE\n" "false\n"
//BOOL bRet = 1; //输出的是"TRUE\n" "true\n"
BOOL bRet = 2; //输出的是"ERROR\n" "true\n"
if (bRet == TRUE) {
cout << "TRUE\n";
} else if (bRet == FALSE) {
cout << "FALSE\n";
} else {
cout << "ERROR\n";
}
//bool bret = (bRet == TRUE);
bool bret = bRet;
if (bret == true) {
cout << "true\n";
} else if (bret == false) {
cout << "false\n";
} else {
cout << "error\n";
}
while (1);
}
原因:1、BOOL类型的值分辩(0和1);值为0表示FALSE,为1表示TRUE,为其余都是ERROR。BOOL一般有4个字节。
2、bool类型的值分辩(0和非0);值为0表示false,为其余都是true。bool只有一个字节。
结论:
1、所以BOOL转bool的时候应该注意这样转:bool bret = (bRet == TRUE);