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

时间:2013-09-23 13:34:08

标签: 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;

2 个答案:

答案 0 :(得分:1)

在优化版本中,编译器可以通过

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

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

答案 1 :(得分:0)

我不确定你为什么要在char中存储布尔值,但是(假设你真的想用dataPresentBINARYDATA_MASK进行二元AND操作 - 并且从{ {1}}是一个宏,它被定义为常量而不期望参数)

BINARYDATA_MASK

在保持所需功能的同时,应该摆脱你所看到的警告。

或者,由于CValue已设置为0,您可以将代码修改为:

char CValue = 0;
CValue = static_cast<char>((dataPresent & BINARYDATA_MASK) ? 1 : 0);
CValue +=1;

听起来你有一个错字,你没有在你的问题中显示。

相关问题