uint8_t上的按位运算

时间:2019-05-06 21:57:27

标签: c

我试图了解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,但是如果我使用无符号变量怎么可能?

0 个答案:

没有答案