我试图了解c中按位运算的工作方式。我有一个功能有问题。有人可以向我解释if语句的结果吗?
void zad7() {
uint8_t a = 0xF0;
uint8_t b = 0x0F;
const char *str = "Panda 3.0";
if (~a ^ b) {
printf("A");
}
else {
printf("B");
}
b -= 9;
if (a++) {
printf("C");
}
if (--a || (b & a)) {
printf("D");
}
printf("%s", str + b);
}
我希望输出为B3.0。几乎完全不同(ACD3.0) 视觉向我显示,第一次异或运算的结果是-256,但是如果我使用无符号变量怎么可能?