C++ 将bool转换为char会导致错误和代码中断

C++ 将bool转换为char会导致错误和代码中断,c++,c,visual-c++,C++,C,Visual C++,如何使用char来获取位的状态,稍后我需要将char变量增加到1 char CValue = 0; CValue = (dataPresent & BINARYDATA_MASK)? 1:0; // code breaks here bcz of conditional statment CValue +=1; 我不知道为什么要将布尔值存储在char中,但是(假设您真的想使用dataPresent和BINARYDATA\u MASK执行二进制AND操作,并且由于BINAR

如何使用char来获取位的状态,稍后我需要将char变量增加到1

      char CValue = 0;
CValue = (dataPresent & BINARYDATA_MASK)? 1:0;  // code breaks here bcz of conditional statment
CValue +=1;

我不知道为什么要将布尔值存储在
char
中,但是(假设您真的想使用
dataPresent
BINARYDATA\u MASK
执行二进制AND操作,并且由于
BINARYDATA\u MASK
是一个宏,它被定义为常量,不需要参数)


听起来好像你的问题中没有出现打字错误。

在优化版本中,编译器可能会用

char CValue = (dataPresent & BINARYDATA_MASK)? 2: 1;

因为优化后的代码中只有一行,所以您不会看到调试程序在单步执行时多次停止。

什么是“代码在此中断”?错误消息是什么?您期望得到什么?在执行第一行控制后,该区域未执行“CValue+=1”控制未达到CValue+=1;codecan条件变量返回VHARA是否将二进制AND误认为是逻辑AND?什么类型是
dataPresent
BINARYDATA\u MASK
1和0都应该可以分配给一个char而不强制转换它们是,但是听起来好像他得到了一个关于隐式强制转换的警告。OP没有说任何关于警告的内容。那行没有执行,老实说,当我保持断点时,控件跳过这个STATTOTOP并没有说什么。。。
char CValue = 0;
if (dataPresent & BINARYDATA_MASK)
{
    CValue = 1;
}
CValue += 1;
char CValue = (dataPresent & BINARYDATA_MASK)? 2: 1;