经过一些头部划痕之后,我确定签名和未签名的字符在涉及==标志时会有惊人的差异。未签名与已签名问题的比特NOT和比较
void loop()
{
}
void setup()
{
unsigned char ucA = 0x55;
unsigned char ucB = 0xAA;
unsigned char ucB_not;
char cA = 0x55;
char cB = 0xAA;
Serial.begin(115200);
if (ucA == ~ucB)
Serial.println("unsigned -- match");
else
Serial.println("unsigned -- no match");
if (cA == ~cB)
Serial.println("signed -- match");
else
Serial.println("signed -- no match");
ucB_not = ~ucB;
if (ucA == ucB_not)
Serial.println("unsigned, seperate variable -- match");
else
Serial.println("unsigned, seperate variable -- no match");
}
我得到的输出是:
unsigned -- no match
signed -- match
unsigned, seperate variable -- match
有一些规则,即价值得到比较之前变宽?即使如此,未签名的的情况下应该不是一个问题,应该吗?
我已经添加了最后一种情况 - 创建一个单独的变量似乎没有问题。
我使用的是Arduino 1.0.5版本。