-3

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

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

2 回答 2

1

在优化的构建中,编译器可以将其替换为

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

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

于 2013-09-23T14:01:28.353 回答
0

我不确定你为什么在 a 中存储布尔值char,但是(假设你真的想用dataPresentand进行二进制 AND 运算BINARYDATA_MASK- 因为BINARYDATA_MASK是一个宏,所以它被定义为一个常量并且不需要参数)

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

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

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

char CValue = 0;
if (dataPresent & BINARYDATA_MASK)
{
    CValue = 1;
}
CValue += 1;

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

于 2013-09-23T13:44:30.290 回答