为什么这个if语句不是运行?

Why does this if statement not run?

我有这个 C 代码,当我用调试器检查它时,if 或 else 块都不是 运行

代码如下:

if(P2IN & BIT4 == BIT4 ){
    car_lock ^= BIT0;
    is_pressed = 1;
}else{
    is_pressed = 0;
}

此时在代码中,P2IN = 00010000

似乎 if 和 else 块都不是 运行,我错过了什么?

问题出在您的 if 语句中。 == 运算符的优先级高于 &,因此真正计算的是:

(P2IN & (BIT4 == BIT4))

您需要将代码更改为:

if ((P2IN & BIT4) == BIT4)

有一个关于运算符优先级的有用网页 here