为什么这个if语句没有运行?

Mat*_*t D 1 c msp430

我有这个C代码,当我使用调试器完成它时,if或else块都没有运行

这是代码:

if(P2IN & BIT4 == BIT4 ){
    car_lock ^= BIT0;
    is_pressed = 1;
}else{
    is_pressed = 0;
}
Run Code Online (Sandbox Code Playgroud)

在代码中的这一点,P2IN = 00010000

似乎if或else块都没有运行,我错过了什么?

MD *_* XF 6

问题出在你的if陈述中.该==运营商花费了比更高的优先级&,那么什么是真正被评价为:

(P2IN & (BIT4 == BIT4))
Run Code Online (Sandbox Code Playgroud)

您需要将代码更改为:

if ((P2IN & BIT4) == BIT4)
Run Code Online (Sandbox Code Playgroud)

有一个关于运算符优先级一个有用的网页这里.